diff --git a/.docker/default.conf b/.docker/default.conf deleted file mode 100644 index 9d3a7b22..00000000 --- a/.docker/default.conf +++ /dev/null @@ -1,21 +0,0 @@ -server { - listen 80; - listen [::]:80; - server_name localhost; - - location / { - root /usr/share/nginx/html; - index index.html; - add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; font-src data: 'self'"; - add_header X-XSS-Protection "1; mode=block"; - add_header X-Frame-Options "DENY"; - add_header X-Content-Type-Options nosniff; - add_header Referrer-Policy "strict-origin"; - } - - error_page 500 502 503 504 /50x.html; - location = /50x.html { - root /usr/share/nginx/html; - } - -} diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index f01a2390..00000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,3 +0,0 @@ -# These are supported funding model platforms -github: Azgaar -patreon: Azgaar diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index d4407a32..00000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -name: Bug report -about: Report a problem -title: '' -labels: pending review -assignees: Azgaar - ---- - - -**Describe the bug** - - -**Steps to reproduce** - -1. Click on ... -2. Type ... -3. See the ... - -**Expected behavior** - - -**.map file** - - -**Screenshots** - - -**System** - - - Version: ... - - Browser: ... - - OS: ... diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 29ab55e2..00000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -name: Feature request -about: Suggest an idea -title: '' -labels: pending review -assignees: Azgaar - ---- - -<-- BEFORE CREATING PLEASE CHECK THE TO-DO LIST--> -<-- https://trello.com/b/7x832DG4/fantasy-map-generator ->> -**Problem** -<-- Is your feature request related to a problem? Please describe. Ex.: I'm always frustrated when ... --> - -**Solution** -<-- A clear and concise description of what you want to happen and ideas on how it can be implemented. Screenshots are welcomed --> - -**Alternatives** -<-- A clear and concise description of any alternative solutions or features you've considered --> diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md deleted file mode 100644 index 698d23ae..00000000 --- a/.github/copilot-instructions.md +++ /dev/null @@ -1,89 +0,0 @@ -# Fantasy Map Generator - -Azgaar's Fantasy Map Generator is a client-side JavaScript web application for creating fantasy maps. It generates detailed fantasy worlds with countries, cities, rivers, biomes, and cultural elements. - -Always reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the info here. - -## Working Effectively - -- **CRITICAL**: This is a static web application - NO build process needed. No npm install, no compilation, no bundling. -- Run the application using HTTP server (required - cannot run with file:// protocol): - - `python3 -m http.server 8000` - takes 2-3 seconds to start -- Access at: `http://localhost:8000` - -## Validation - -- Always manually validate any changes by: - 1. Starting the HTTP server (NEVER CANCEL - wait for full startup) - 2. Navigate to the application in browser - 3. Click the "►" button to open the menu and generate a new map - 4. **CRITICAL VALIDATION**: Verify the map generates with countries, cities, roads, and geographic features - 5. Test UI interaction: click "Layers" button, verify layer controls work - 6. Test regeneration: click "New Map!" button, verify new map generates correctly -- **Known Issues**: Google Analytics and font loading errors are normal (blocked external resources) - -## Repository Structure - -### Core Files - -- `index.html` - Main application entry point -- `main.js` - Core application logic -- `versioning.js` - Version management and update handling - -### Key Directories - -- `modules/` - core functionality modules: - - `modules/ui/` - UI components (editors, tools, style management) - - `modules/dynamic/` - runtime modules (export, installation) - - `modules/renderers/` - drawing and rendering logic -- `utils/` - utility libraries (math, arrays, strings, etc.) -- `styles/` - visual style presets (JSON files) -- `libs/` - Third-party libraries (D3.js, TinyMCE, etc.) -- `images/` - backgrounds, UI elements -- `charges/` - heraldic symbols and coat of arms elements -- `config/` - Heightmap templates and configurations -- `heightmaps/` - Terrain generation data - -## Common Tasks - -### Making Code Changes - -1. Edit JavaScript files directly (no compilation needed) -2. Refresh browser to see changes immediately -3. **ALWAYS test map generation** after making changes -4. Update version in `versioning.js` for all changes -5. Update file hashes in `index.html` for changed files (format: `file.js?v=1.108.1`) - -### Debugging Map Generation - -- Open browser developer tools console -- Look for timing logs, e.g. "TOTAL: ~0.76s" -- Map generation logs show each step (heightmap, rivers, states, etc.) -- Error messages will indicate specific generation failures - -### Testing Different Map Types - -- Use "New Map!" button for quick regeneration -- Access "Layers" menu to change map visualization -- Available presets: Political, Cultural, Religions, Biomes, Heightmap, Physical, Military - -## Troubleshooting - -### Application Won't Load - -- Ensure using HTTP server (not file://) -- Check console for JavaScript errors -- Verify all files are present in repository - -### Map Generation Fails - -- Check browser console for error messages -- Look for specific module failures in generation logs -- Try refreshing page and generating new map - -### Performance Issues - -- Map generation should complete in ~1 second for standard configurations -- If slower, check browser console for errors - -Remember: This is a sophisticated client-side application that generates complete fantasy worlds with political systems, geography, cultures, and detailed cartographic elements. Always validate that your changes preserve the core map generation functionality. diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md deleted file mode 100644 index acedeb18..00000000 --- a/.github/pull_request_template.md +++ /dev/null @@ -1,23 +0,0 @@ -# Description - - - -# Type of change - - - -- [ ] Bug fix -- [ ] New feature -- [ ] Refactoring / style -- [ ] Documentation update / chore -- [ ] Other (please describe) - -# Versioning - - - -- [ ] Version is updated -- [ ] Changed files hash is updated diff --git a/.gitignore b/.gitignore deleted file mode 100644 index b0a273f0..00000000 --- a/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -.vscode -.idea -/node_modules -/dist -/coverage diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 6afdcc7d..00000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "version": "0.1.0", - "configurations": [ - { - "name": "Debug", - "type": "chrome", - "request": "launch", - "file": "${workspaceFolder}/index.html" - } - ] -} \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index 23cfdd81..00000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,108 +0,0 @@ -# Contributor Code of Conduct - -We as members, contributors, and leaders agree to make participation in our -community a harassment-free experience for everyone, regardless of age, body -size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity -and orientation. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our -community include: - -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, - and learning from the experience -* Focusing on what is best not just for us as individuals, but for the - overall community - -Examples of unacceptable behavior include: - -* Vocal support of agressive behaviour, agressive communities or countries -* The use of sexualized language or imagery, and sexual attention or - advances of any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email - address, without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of -acceptable behavior and will take appropriate and fair corrective action in -response to any behavior that they deem inappropriate, threatening, offensive, -or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, and will communicate reasons for moderation -decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when -an individual is officially representing the community in public spaces. -Examples of representing our community include using an official e-mail address, -posting via an official social media account, or acting as an appointed -representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at -azgaar.fmg@yandex.com. -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the -reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining -the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Warning - -**Community Impact**: A violation through a single incident or series -of actions. - -**Consequence**: A warning with consequences for continued behavior. No -interaction with the people involved, including unsolicited interaction with -those enforcing the Code of Conduct, for a specified period of time. This -includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or -permanent ban. - -### 2. Temporary Ban - -**Community Impact**: A serious violation of community standards, including -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public -communication with the community for a specified period of time. No public or -private interaction with the people involved, including unsolicited interaction -with those enforcing the Code of Conduct, is allowed during this period. -Violating these terms may lead to a permanent ban. - -### 3. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within -the community. - -## Attribution - -This Code of Conduct is based on [Contributor Covenant](https://www.contributor-covenant.org/version/2/0/code_of_conduct.html), -version 2.0. - -Community Impact Guidelines were inspired by [Mozilla's code of conduct -enforcement ladder](https://github.com/mozilla/diversity). diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index fbf5a425..00000000 --- a/Dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -FROM nginx:stable-alpine - -# Copy the contents of the repo to the container -COPY . /usr/share/nginx/html - -# Move the customized nginx config file to the nginx folder -RUN mv /usr/share/nginx/html/.docker/default.conf /etc/nginx/conf.d/default.conf diff --git a/LICENSE b/LICENSE index 4b0e677e..94a9ed02 100644 --- a/LICENSE +++ b/LICENSE @@ -1,25 +1,674 @@ -MIT License + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 -Copyright 2017-2024 Max Haniyeu (Azgaar), azgaar.fmg@yandex.com + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: + Preamble -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. + The GNU General Public License is a free, copyleft license for +software and other kinds of works. -You can produce, without restrictions, any derivative works from the original -software and even reap commercial benefits from the sale of the secondary product. -The derivates include created maps, map images, screenshots, videos, and other materials. + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md index 3ab245b2..c9d2d0cf 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,19 @@ # Fantasy Map Generator -Azgaar's _Fantasy Map Generator_ is a free web application that helps fantasy writers, game masters, and cartographers create and edit fantasy maps. +Azgaar's _Fantasy Map Generator_. Online tool generating maps based on [D3](https://d3js.org) Voronoi diagram rendered in svg. -Link: [azgaar.github.io/Fantasy-Map-Generator](https://azgaar.github.io/Fantasy-Map-Generator). +Project goal is a procedurally generated map for my *Medieval Dynasty* simulator. Map should be interactive, scalable, fast and plausible. Initial intend was to place at least 500 burgs within 7 cultural areas and imagined land area about 1 million km2. As for now all these parameters are customizable and Generator is mostly used for a homebrew DnD campaign maps. -Refer to the [project wiki](https://github.com/Azgaar/Fantasy-Map-Generator/wiki) for guidance. The current progress is tracked in [Trello](https://trello.com/b/7x832DG4/fantasy-map-generator). Some details are covered in my old blog [_Fantasy Maps for fun and glory_](https://azgaar.wordpress.com). +[](https://azgaar.wordpress.com) -[](https://github.com/Azgaar/Fantasy-Map-Generator/assets/26469650/11a42446-4bd5-4526-9cb1-3ef97c868992) +Project is under active development, check out the work in progress version [here](https://azgaar.github.io/Fantasy-Map-Generator). See the [changelog](https://github.com/Azgaar/Fantasy-Map-Generator/wiki/Changelog) for archived versions. Refer to the [project wiki](https://github.com/Azgaar/Fantasy-Map-Generator/wiki) for a quick guidance. Some details are covered in my blog [_Fantasy Maps for fun and glory_](https://azgaar.wordpress.com), you may also keep an eye on my [Trello devboard](https://trello.com/b/7x832DG4/fantasy-map-generator). -[](https://github.com/Azgaar/Fantasy-Map-Generator/assets/26469650/e751a9e5-7986-4638-b8a9-362395ef7583) - -[](https://github.com/Azgaar/Fantasy-Map-Generator/assets/26469650/b0d0efde-a0d1-4e80-8818-ea3dd83c2323) - -Join our [Discord server](https://discordapp.com/invite/X7E84HU) and [Reddit community](https://www.reddit.com/r/FantasyMapGenerator) to share your creations, discuss the Generator, suggest ideas and get the most recent updates. - -Contact me via [email](mailto:azgaar.fmg@yandex.com) if you have non-public suggestions. For bug reports please use [GitHub issues](https://github.com/Azgaar/Fantasy-Map-Generator/issues) or _#fmg-bugs_ channel on Discord. If you are facing performance issues, please read [the tips](https://github.com/Azgaar/Fantasy-Map-Generator/wiki/Tips#performance-tips). - -Pull requests are highly welcomed. The codebase is messy and requires re-design. I will appreciate if you start with minor changes. Check out the [data model](https://github.com/Azgaar/Fantasy-Map-Generator/wiki/Data-model) before contributing. - -You can support the project on [Patreon](https://www.patreon.com/azgaar). + Join our [Reddit community](https://www.reddit.com/r/FantasyMapGenerator) to share the created maps, discuss the Generator, suggest ideas and get a most recent updates. You may also contact me directly via [email](mailto:maxganiev@yandex.com). For bug reports please use the project [issues page](https://github.com/Azgaar/Fantasy-Map-Generator/issues). If you find the Demo performance low, open the page in a much smaller window and use the default graph size only. The best performance is observed in Chrome, there are also some reports about different features not working on Mac OS. _Inspiration:_ -- Martin O'Leary's [_Generating fantasy maps_](https://mewo2.com/notes/terrain) +* Martin O'Leary's [_Generating fantasy maps_](https://mewo2.com/notes/terrain) -- Amit Patel's [_Polygonal Map Generation for Games_](http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation) +* Amit Patel's [_Polygonal Map Generation for Games_](http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation) -- Scott Turner's [_Here Dragons Abound_](https://heredragonsabound.blogspot.com) +* Scott Turner's [_Here Dragons Abound_](https://heredragonsabound.blogspot.com) diff --git a/_config.yml b/_config.yml new file mode 100644 index 00000000..c7418817 --- /dev/null +++ b/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-slate \ No newline at end of file diff --git a/charges/agnusDei.svg b/charges/agnusDei.svg deleted file mode 100644 index 60ea9d87..00000000 --- a/charges/agnusDei.svg +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/anchor.svg b/charges/anchor.svg deleted file mode 100644 index 59678314..00000000 --- a/charges/anchor.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/charges/angel.svg b/charges/angel.svg deleted file mode 100644 index e6f3ba3e..00000000 --- a/charges/angel.svg +++ /dev/null @@ -1,227 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/annulet.svg b/charges/annulet.svg deleted file mode 100644 index b3dad13d..00000000 --- a/charges/annulet.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/anvil.svg b/charges/anvil.svg deleted file mode 100644 index 2b6b0868..00000000 --- a/charges/anvil.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/charges/apple.svg b/charges/apple.svg deleted file mode 100644 index 6679428d..00000000 --- a/charges/apple.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/charges/arbalest.svg b/charges/arbalest.svg deleted file mode 100644 index 38adac50..00000000 --- a/charges/arbalest.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/arbalest2.svg b/charges/arbalest2.svg deleted file mode 100644 index be9b1a6a..00000000 --- a/charges/arbalest2.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/archer.svg b/charges/archer.svg deleted file mode 100644 index 00891c1b..00000000 --- a/charges/archer.svg +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/armEmbowedHoldingSabre.svg b/charges/armEmbowedHoldingSabre.svg deleted file mode 100644 index 2fbae9f6..00000000 --- a/charges/armEmbowedHoldingSabre.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/armEmbowedVambraced.svg b/charges/armEmbowedVambraced.svg deleted file mode 100644 index ac1422b5..00000000 --- a/charges/armEmbowedVambraced.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/armEmbowedVambracedHoldingSword.svg b/charges/armEmbowedVambracedHoldingSword.svg deleted file mode 100644 index d00d8bab..00000000 --- a/charges/armEmbowedVambracedHoldingSword.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/armillarySphere.svg b/charges/armillarySphere.svg deleted file mode 100644 index 45d09b8d..00000000 --- a/charges/armillarySphere.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/charges/arrow.svg b/charges/arrow.svg deleted file mode 100644 index 2135169f..00000000 --- a/charges/arrow.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/charges/arrowsSheaf.svg b/charges/arrowsSheaf.svg deleted file mode 100644 index 4b879e10..00000000 --- a/charges/arrowsSheaf.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/attire.svg b/charges/attire.svg deleted file mode 100644 index 99427a60..00000000 --- a/charges/attire.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/charges/axe.svg b/charges/axe.svg deleted file mode 100644 index e1608145..00000000 --- a/charges/axe.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/charges/badgerStatant.svg b/charges/badgerStatant.svg deleted file mode 100644 index 29cd5f39..00000000 --- a/charges/badgerStatant.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/banner.svg b/charges/banner.svg deleted file mode 100644 index 8ca47b97..00000000 --- a/charges/banner.svg +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/basilisk.svg b/charges/basilisk.svg deleted file mode 100644 index b2755dff..00000000 --- a/charges/basilisk.svg +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/bearPassant.svg b/charges/bearPassant.svg deleted file mode 100644 index 847ea7bd..00000000 --- a/charges/bearPassant.svg +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/bearRampant.svg b/charges/bearRampant.svg deleted file mode 100644 index 418d6fb3..00000000 --- a/charges/bearRampant.svg +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/bee.svg b/charges/bee.svg deleted file mode 100644 index 7f3a0069..00000000 --- a/charges/bee.svg +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/bell.svg b/charges/bell.svg deleted file mode 100644 index 307b6493..00000000 --- a/charges/bell.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/charges/billet.svg b/charges/billet.svg deleted file mode 100644 index 9482f5a7..00000000 --- a/charges/billet.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/boarHeadErased.svg b/charges/boarHeadErased.svg deleted file mode 100644 index 08348586..00000000 --- a/charges/boarHeadErased.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/boarRampant.svg b/charges/boarRampant.svg deleted file mode 100644 index 436fb439..00000000 --- a/charges/boarRampant.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/boat.svg b/charges/boat.svg deleted file mode 100644 index b50f6194..00000000 --- a/charges/boat.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/charges/boat2.svg b/charges/boat2.svg deleted file mode 100644 index f3e37a5b..00000000 --- a/charges/boat2.svg +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/bone.svg b/charges/bone.svg deleted file mode 100644 index 27a9e410..00000000 --- a/charges/bone.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/bookClosed.svg b/charges/bookClosed.svg deleted file mode 100644 index 0cd74341..00000000 --- a/charges/bookClosed.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/charges/bookClosed2.svg b/charges/bookClosed2.svg deleted file mode 100644 index bf8d2519..00000000 --- a/charges/bookClosed2.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/bookOpen.svg b/charges/bookOpen.svg deleted file mode 100644 index 62f1c6fc..00000000 --- a/charges/bookOpen.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/bow.svg b/charges/bow.svg deleted file mode 100644 index b1f2c8ec..00000000 --- a/charges/bow.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/charges/bowWithArrow.svg b/charges/bowWithArrow.svg deleted file mode 100644 index 12d7f9ff..00000000 --- a/charges/bowWithArrow.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/charges/bowWithThreeArrows.svg b/charges/bowWithThreeArrows.svg deleted file mode 100644 index 0efc30f2..00000000 --- a/charges/bowWithThreeArrows.svg +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/bridge.svg b/charges/bridge.svg deleted file mode 100644 index f5ce588e..00000000 --- a/charges/bridge.svg +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/bridge2.svg b/charges/bridge2.svg deleted file mode 100644 index 6d3dfab5..00000000 --- a/charges/bridge2.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/bucket.svg b/charges/bucket.svg deleted file mode 100644 index 56c7e83c..00000000 --- a/charges/bucket.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/charges/buckle.svg b/charges/buckle.svg deleted file mode 100644 index b83ba97d..00000000 --- a/charges/buckle.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/charges/bugleHorn.svg b/charges/bugleHorn.svg deleted file mode 100644 index a7985ca6..00000000 --- a/charges/bugleHorn.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/charges/bugleHorn2.svg b/charges/bugleHorn2.svg deleted file mode 100644 index cf5bcaa7..00000000 --- a/charges/bugleHorn2.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/charges/bullHeadCaboshed.svg b/charges/bullHeadCaboshed.svg deleted file mode 100644 index d3ddeccc..00000000 --- a/charges/bullHeadCaboshed.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/charges/bullPassant.svg b/charges/bullPassant.svg deleted file mode 100644 index 0314b64e..00000000 --- a/charges/bullPassant.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/butterfly.svg b/charges/butterfly.svg deleted file mode 100644 index 2c301fcf..00000000 --- a/charges/butterfly.svg +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/camel.svg b/charges/camel.svg deleted file mode 100644 index e2dd8bb9..00000000 --- a/charges/camel.svg +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/cancer.svg b/charges/cancer.svg deleted file mode 100644 index a8bf102c..00000000 --- a/charges/cancer.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/charges/cannon.svg b/charges/cannon.svg deleted file mode 100644 index 05e88b25..00000000 --- a/charges/cannon.svg +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/caravel.svg b/charges/caravel.svg deleted file mode 100644 index 9eb57671..00000000 --- a/charges/caravel.svg +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/carreau.svg b/charges/carreau.svg deleted file mode 100644 index bfeeb049..00000000 --- a/charges/carreau.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/castle.svg b/charges/castle.svg deleted file mode 100644 index 43a2fa38..00000000 --- a/charges/castle.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/castle2.svg b/charges/castle2.svg deleted file mode 100644 index 5f12a8aa..00000000 --- a/charges/castle2.svg +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/catPassantGuardant.svg b/charges/catPassantGuardant.svg deleted file mode 100644 index b49dc820..00000000 --- a/charges/catPassantGuardant.svg +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/cavalier.svg b/charges/cavalier.svg deleted file mode 100644 index 7bfad7ac..00000000 --- a/charges/cavalier.svg +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/centaur.svg b/charges/centaur.svg deleted file mode 100644 index f4ddeb22..00000000 --- a/charges/centaur.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/chain.svg b/charges/chain.svg deleted file mode 100644 index cfe4a3bb..00000000 --- a/charges/chain.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/charges/chalice.svg b/charges/chalice.svg deleted file mode 100644 index 0f4f95f6..00000000 --- a/charges/chalice.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/charges/cinquefoil.svg b/charges/cinquefoil.svg deleted file mode 100644 index 49db293e..00000000 --- a/charges/cinquefoil.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/charges/cock.svg b/charges/cock.svg deleted file mode 100644 index 4b100034..00000000 --- a/charges/cock.svg +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/column.svg b/charges/column.svg deleted file mode 100644 index 38d8b2a0..00000000 --- a/charges/column.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/charges/comet.svg b/charges/comet.svg deleted file mode 100644 index 096ddb67..00000000 --- a/charges/comet.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/compassRose.svg b/charges/compassRose.svg deleted file mode 100644 index dec495cc..00000000 --- a/charges/compassRose.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/charges/cossack.svg b/charges/cossack.svg deleted file mode 100644 index f5cf75ed..00000000 --- a/charges/cossack.svg +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/cowHorns.svg b/charges/cowHorns.svg deleted file mode 100644 index 74378210..00000000 --- a/charges/cowHorns.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/charges/cowStatant.svg b/charges/cowStatant.svg deleted file mode 100644 index 66b46823..00000000 --- a/charges/cowStatant.svg +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/crescent.svg b/charges/crescent.svg deleted file mode 100644 index 9181995b..00000000 --- a/charges/crescent.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/charges/crocodile.svg b/charges/crocodile.svg deleted file mode 100644 index 442e456d..00000000 --- a/charges/crocodile.svg +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/crosier.svg b/charges/crosier.svg deleted file mode 100644 index 631ef998..00000000 --- a/charges/crosier.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/charges/crossAnkh.svg b/charges/crossAnkh.svg deleted file mode 100644 index 6bbac70e..00000000 --- a/charges/crossAnkh.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossArrowed.svg b/charges/crossArrowed.svg deleted file mode 100644 index ff4b6c02..00000000 --- a/charges/crossArrowed.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/charges/crossAvellane.svg b/charges/crossAvellane.svg deleted file mode 100644 index 303e7f72..00000000 --- a/charges/crossAvellane.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/charges/crossBiparted.svg b/charges/crossBiparted.svg deleted file mode 100644 index 0e6ac5f8..00000000 --- a/charges/crossBiparted.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossBottony.svg b/charges/crossBottony.svg deleted file mode 100644 index 2d246b29..00000000 --- a/charges/crossBottony.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossBurgundy.svg b/charges/crossBurgundy.svg deleted file mode 100644 index cb681714..00000000 --- a/charges/crossBurgundy.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossCalvary.svg b/charges/crossCalvary.svg deleted file mode 100644 index dd0447b5..00000000 --- a/charges/crossCalvary.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/charges/crossCarolingian.svg b/charges/crossCarolingian.svg deleted file mode 100644 index 761464a7..00000000 --- a/charges/crossCarolingian.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/crossCeltic.svg b/charges/crossCeltic.svg deleted file mode 100644 index 6abe10fe..00000000 --- a/charges/crossCeltic.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossCeltic2.svg b/charges/crossCeltic2.svg deleted file mode 100644 index 84628911..00000000 --- a/charges/crossCeltic2.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossCercelee.svg b/charges/crossCercelee.svg deleted file mode 100644 index 2b8bff16..00000000 --- a/charges/crossCercelee.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossClechy.svg b/charges/crossClechy.svg deleted file mode 100644 index c246534e..00000000 --- a/charges/crossClechy.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossDouble.svg b/charges/crossDouble.svg deleted file mode 100644 index 1a0e4bc8..00000000 --- a/charges/crossDouble.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/charges/crossErminee.svg b/charges/crossErminee.svg deleted file mode 100644 index 1def3830..00000000 --- a/charges/crossErminee.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossFitchy.svg b/charges/crossFitchy.svg deleted file mode 100644 index 954b8e70..00000000 --- a/charges/crossFitchy.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossFleury.svg b/charges/crossFleury.svg deleted file mode 100644 index d617a15d..00000000 --- a/charges/crossFleury.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossFormee.svg b/charges/crossFormee.svg deleted file mode 100644 index efef99d4..00000000 --- a/charges/crossFormee.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossFormee2.svg b/charges/crossFormee2.svg deleted file mode 100644 index 2309e494..00000000 --- a/charges/crossFormee2.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossFourchy.svg b/charges/crossFourchy.svg deleted file mode 100644 index 9308a143..00000000 --- a/charges/crossFourchy.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossGamma.svg b/charges/crossGamma.svg deleted file mode 100644 index d2da6490..00000000 --- a/charges/crossGamma.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossHummetty.svg b/charges/crossHummetty.svg deleted file mode 100644 index e2676ab2..00000000 --- a/charges/crossHummetty.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossJerusalem.svg b/charges/crossJerusalem.svg deleted file mode 100644 index 54ba95dc..00000000 --- a/charges/crossJerusalem.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossLatin.svg b/charges/crossLatin.svg deleted file mode 100644 index 16f60138..00000000 --- a/charges/crossLatin.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossMaltese.svg b/charges/crossMaltese.svg deleted file mode 100644 index 5718dacf..00000000 --- a/charges/crossMaltese.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossMoline.svg b/charges/crossMoline.svg deleted file mode 100644 index 97f3b918..00000000 --- a/charges/crossMoline.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossOccitan.svg b/charges/crossOccitan.svg deleted file mode 100644 index 15fe7587..00000000 --- a/charges/crossOccitan.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossOrthodox.svg b/charges/crossOrthodox.svg deleted file mode 100644 index 9519f84d..00000000 --- a/charges/crossOrthodox.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossPatonce.svg b/charges/crossPatonce.svg deleted file mode 100644 index aaaec339..00000000 --- a/charges/crossPatonce.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossPatriarchal.svg b/charges/crossPatriarchal.svg deleted file mode 100644 index 12338bc2..00000000 --- a/charges/crossPatriarchal.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossPattee.svg b/charges/crossPattee.svg deleted file mode 100644 index 1c3bf761..00000000 --- a/charges/crossPattee.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossPatteeAlisee.svg b/charges/crossPatteeAlisee.svg deleted file mode 100644 index 801e7113..00000000 --- a/charges/crossPatteeAlisee.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossPommy.svg b/charges/crossPommy.svg deleted file mode 100644 index da002347..00000000 --- a/charges/crossPommy.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossPotent.svg b/charges/crossPotent.svg deleted file mode 100644 index cc3bb92f..00000000 --- a/charges/crossPotent.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossSaltire.svg b/charges/crossSaltire.svg deleted file mode 100644 index 8798ba45..00000000 --- a/charges/crossSaltire.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossSantiago.svg b/charges/crossSantiago.svg deleted file mode 100644 index 7e510a90..00000000 --- a/charges/crossSantiago.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/charges/crossTau.svg b/charges/crossTau.svg deleted file mode 100644 index 0789faf5..00000000 --- a/charges/crossTau.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossTemplar.svg b/charges/crossTemplar.svg deleted file mode 100644 index 9c33613c..00000000 --- a/charges/crossTemplar.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossTriquetra.svg b/charges/crossTriquetra.svg deleted file mode 100644 index 024225c1..00000000 --- a/charges/crossTriquetra.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/charges/crossVoided.svg b/charges/crossVoided.svg deleted file mode 100644 index 0fa95bd7..00000000 --- a/charges/crossVoided.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/crossedBones.svg b/charges/crossedBones.svg deleted file mode 100644 index 3b06442f..00000000 --- a/charges/crossedBones.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/charges/crosslet.svg b/charges/crosslet.svg deleted file mode 100644 index 645b68a3..00000000 --- a/charges/crosslet.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/charges/crown.svg b/charges/crown.svg deleted file mode 100644 index 00dbbacf..00000000 --- a/charges/crown.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/charges/crown2.svg b/charges/crown2.svg deleted file mode 100644 index f06a106e..00000000 --- a/charges/crown2.svg +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/deerHeadCaboshed.svg b/charges/deerHeadCaboshed.svg deleted file mode 100644 index aca87f99..00000000 --- a/charges/deerHeadCaboshed.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/delf.svg b/charges/delf.svg deleted file mode 100644 index 227bd04f..00000000 --- a/charges/delf.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/dolphin.svg b/charges/dolphin.svg deleted file mode 100644 index be5b00bd..00000000 --- a/charges/dolphin.svg +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/donkeyHeadCaboshed.svg b/charges/donkeyHeadCaboshed.svg deleted file mode 100644 index da5aee0a..00000000 --- a/charges/donkeyHeadCaboshed.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/dove.svg b/charges/dove.svg deleted file mode 100644 index 7406a6ec..00000000 --- a/charges/dove.svg +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/doveDisplayed.svg b/charges/doveDisplayed.svg deleted file mode 100644 index 35bd14d6..00000000 --- a/charges/doveDisplayed.svg +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/dragonPassant.svg b/charges/dragonPassant.svg deleted file mode 100644 index b8fbc58e..00000000 --- a/charges/dragonPassant.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/dragonRampant.svg b/charges/dragonRampant.svg deleted file mode 100644 index 6ff64c2a..00000000 --- a/charges/dragonRampant.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/dragonfly.svg b/charges/dragonfly.svg deleted file mode 100644 index c8b501ca..00000000 --- a/charges/dragonfly.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/charges/drakkar.svg b/charges/drakkar.svg deleted file mode 100644 index f36c3c4d..00000000 --- a/charges/drakkar.svg +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/drawingCompass.svg b/charges/drawingCompass.svg deleted file mode 100644 index 65a252d3..00000000 --- a/charges/drawingCompass.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/charges/drum.svg b/charges/drum.svg deleted file mode 100644 index bd8fd638..00000000 --- a/charges/drum.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/charges/duck.svg b/charges/duck.svg deleted file mode 100644 index 940c3e4d..00000000 --- a/charges/duck.svg +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/eagle.svg b/charges/eagle.svg deleted file mode 100644 index c52fd495..00000000 --- a/charges/eagle.svg +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/eagleTwoHeads.svg b/charges/eagleTwoHeads.svg deleted file mode 100644 index cc8ac124..00000000 --- a/charges/eagleTwoHeads.svg +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/earOfWheat.svg b/charges/earOfWheat.svg deleted file mode 100644 index a1b3072c..00000000 --- a/charges/earOfWheat.svg +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/elephant.svg b/charges/elephant.svg deleted file mode 100644 index fed4c13f..00000000 --- a/charges/elephant.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/charges/elephantHeadErased.svg b/charges/elephantHeadErased.svg deleted file mode 100644 index f521413b..00000000 --- a/charges/elephantHeadErased.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/escallop.svg b/charges/escallop.svg deleted file mode 100644 index 4fda9dda..00000000 --- a/charges/escallop.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/charges/estoile.svg b/charges/estoile.svg deleted file mode 100644 index 6966ccbc..00000000 --- a/charges/estoile.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/charges/falchion.svg b/charges/falchion.svg deleted file mode 100644 index ccb71d3d..00000000 --- a/charges/falchion.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/charges/falcon.svg b/charges/falcon.svg deleted file mode 100644 index 5e4cebd5..00000000 --- a/charges/falcon.svg +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/fan.svg b/charges/fan.svg deleted file mode 100644 index d7504ac6..00000000 --- a/charges/fan.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/charges/fasces.svg b/charges/fasces.svg deleted file mode 100644 index 71e27285..00000000 --- a/charges/fasces.svg +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/feather.svg b/charges/feather.svg deleted file mode 100644 index 0be55bf5..00000000 --- a/charges/feather.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/charges/flamberge.svg b/charges/flamberge.svg deleted file mode 100644 index ab9d2277..00000000 --- a/charges/flamberge.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/charges/flangedMace.svg b/charges/flangedMace.svg deleted file mode 100644 index 901d942f..00000000 --- a/charges/flangedMace.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/fleurDeLis.svg b/charges/fleurDeLis.svg deleted file mode 100644 index 2583e48f..00000000 --- a/charges/fleurDeLis.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/charges/fly.svg b/charges/fly.svg deleted file mode 100644 index 9c880f72..00000000 --- a/charges/fly.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/foot.svg b/charges/foot.svg deleted file mode 100644 index 22963e5b..00000000 --- a/charges/foot.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/charges/fountain.svg b/charges/fountain.svg deleted file mode 100644 index 1ed8ac67..00000000 --- a/charges/fountain.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/charges/frog.svg b/charges/frog.svg deleted file mode 100644 index 392d3d05..00000000 --- a/charges/frog.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/fusil.svg b/charges/fusil.svg deleted file mode 100644 index eac10ed4..00000000 --- a/charges/fusil.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/garb.svg b/charges/garb.svg deleted file mode 100644 index fbefacd8..00000000 --- a/charges/garb.svg +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/gauntlet.svg b/charges/gauntlet.svg deleted file mode 100644 index f00a03eb..00000000 --- a/charges/gauntlet.svg +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/gear.svg b/charges/gear.svg deleted file mode 100644 index 2d128dfb..00000000 --- a/charges/gear.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/goat.svg b/charges/goat.svg deleted file mode 100644 index 721c3f15..00000000 --- a/charges/goat.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/goutte.svg b/charges/goutte.svg deleted file mode 100644 index 40f23183..00000000 --- a/charges/goutte.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/grapeBunch.svg b/charges/grapeBunch.svg deleted file mode 100644 index 38d4693f..00000000 --- a/charges/grapeBunch.svg +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/grapeBunch2.svg b/charges/grapeBunch2.svg deleted file mode 100644 index 0af7b6a6..00000000 --- a/charges/grapeBunch2.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/grenade.svg b/charges/grenade.svg deleted file mode 100644 index 07436784..00000000 --- a/charges/grenade.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/greyhoundCourant.svg b/charges/greyhoundCourant.svg deleted file mode 100644 index 916d70cf..00000000 --- a/charges/greyhoundCourant.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/charges/greyhoundRampant.svg b/charges/greyhoundRampant.svg deleted file mode 100644 index cf607df5..00000000 --- a/charges/greyhoundRampant.svg +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/greyhoundSejant.svg b/charges/greyhoundSejant.svg deleted file mode 100644 index 09efa81c..00000000 --- a/charges/greyhoundSejant.svg +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/griffinPassant.svg b/charges/griffinPassant.svg deleted file mode 100644 index 871b3591..00000000 --- a/charges/griffinPassant.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/griffinRampant.svg b/charges/griffinRampant.svg deleted file mode 100644 index da2cfebe..00000000 --- a/charges/griffinRampant.svg +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/hand.svg b/charges/hand.svg deleted file mode 100644 index 91c279ae..00000000 --- a/charges/hand.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/charges/harp.svg b/charges/harp.svg deleted file mode 100644 index 91e5ee08..00000000 --- a/charges/harp.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/charges/hatchet.svg b/charges/hatchet.svg deleted file mode 100644 index 37052556..00000000 --- a/charges/hatchet.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/charges/head.svg b/charges/head.svg deleted file mode 100644 index 08e36060..00000000 --- a/charges/head.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/charges/headWreathed.svg b/charges/headWreathed.svg deleted file mode 100644 index b6dafc64..00000000 --- a/charges/headWreathed.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/heart.svg b/charges/heart.svg deleted file mode 100644 index 56d0940c..00000000 --- a/charges/heart.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/hedgehog.svg b/charges/hedgehog.svg deleted file mode 100644 index c7a84caa..00000000 --- a/charges/hedgehog.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/helmet.svg b/charges/helmet.svg deleted file mode 100644 index 9099c7c3..00000000 --- a/charges/helmet.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/charges/helmetCorinthian.svg b/charges/helmetCorinthian.svg deleted file mode 100644 index 3ccd9cdd..00000000 --- a/charges/helmetCorinthian.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/helmetGreat.svg b/charges/helmetGreat.svg deleted file mode 100644 index b7a7bf49..00000000 --- a/charges/helmetGreat.svg +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/helmetZischagge.svg b/charges/helmetZischagge.svg deleted file mode 100644 index 8985d197..00000000 --- a/charges/helmetZischagge.svg +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/heron.svg b/charges/heron.svg deleted file mode 100644 index 4893b082..00000000 --- a/charges/heron.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/hindStatant.svg b/charges/hindStatant.svg deleted file mode 100644 index 3f9cc429..00000000 --- a/charges/hindStatant.svg +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/hook.svg b/charges/hook.svg deleted file mode 100644 index d5679f64..00000000 --- a/charges/hook.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/horseHeadCouped.svg b/charges/horseHeadCouped.svg deleted file mode 100644 index 8c455c23..00000000 --- a/charges/horseHeadCouped.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/horsePassant.svg b/charges/horsePassant.svg deleted file mode 100644 index b2361b84..00000000 --- a/charges/horsePassant.svg +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/horseRampant.svg b/charges/horseRampant.svg deleted file mode 100644 index be7fee6c..00000000 --- a/charges/horseRampant.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/horseSalient.svg b/charges/horseSalient.svg deleted file mode 100644 index 21b5db48..00000000 --- a/charges/horseSalient.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/charges/horseshoe.svg b/charges/horseshoe.svg deleted file mode 100644 index 3bd51f7a..00000000 --- a/charges/horseshoe.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/charges/hourglass.svg b/charges/hourglass.svg deleted file mode 100644 index 87e7930b..00000000 --- a/charges/hourglass.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/key.svg b/charges/key.svg deleted file mode 100644 index 6fb883ea..00000000 --- a/charges/key.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/charges/ladder.svg b/charges/ladder.svg deleted file mode 100644 index fc72f130..00000000 --- a/charges/ladder.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/charges/ladder2.svg b/charges/ladder2.svg deleted file mode 100644 index 5596e045..00000000 --- a/charges/ladder2.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/charges/ladybird.svg b/charges/ladybird.svg deleted file mode 100644 index 3cc1587e..00000000 --- a/charges/ladybird.svg +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/lamb.svg b/charges/lamb.svg deleted file mode 100644 index 1d574b53..00000000 --- a/charges/lamb.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/charges/lambPassantReguardant.svg b/charges/lambPassantReguardant.svg deleted file mode 100644 index 90884eb7..00000000 --- a/charges/lambPassantReguardant.svg +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/lanceHead.svg b/charges/lanceHead.svg deleted file mode 100644 index 255492db..00000000 --- a/charges/lanceHead.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/charges/lanceWithBanner.svg b/charges/lanceWithBanner.svg deleted file mode 100644 index 556e5ade..00000000 --- a/charges/lanceWithBanner.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/charges/laurelWreath.svg b/charges/laurelWreath.svg deleted file mode 100644 index 989e00c4..00000000 --- a/charges/laurelWreath.svg +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/laurelWreath2.svg b/charges/laurelWreath2.svg deleted file mode 100644 index 6dfb373e..00000000 --- a/charges/laurelWreath2.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/lighthouse.svg b/charges/lighthouse.svg deleted file mode 100644 index b66938f5..00000000 --- a/charges/lighthouse.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/charges/lionHeadCaboshed.svg b/charges/lionHeadCaboshed.svg deleted file mode 100644 index 63022fc0..00000000 --- a/charges/lionHeadCaboshed.svg +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/lionHeadErased.svg b/charges/lionHeadErased.svg deleted file mode 100644 index 7ed39c67..00000000 --- a/charges/lionHeadErased.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/lionPassant.svg b/charges/lionPassant.svg deleted file mode 100644 index 7dd6b396..00000000 --- a/charges/lionPassant.svg +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/lionPassantGuardant.svg b/charges/lionPassantGuardant.svg deleted file mode 100644 index 584e8835..00000000 --- a/charges/lionPassantGuardant.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/charges/lionRampant.svg b/charges/lionRampant.svg deleted file mode 100644 index 8aab2b09..00000000 --- a/charges/lionRampant.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/charges/lionSejant.svg b/charges/lionSejant.svg deleted file mode 100644 index 23ca98db..00000000 --- a/charges/lionSejant.svg +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/lizard.svg b/charges/lizard.svg deleted file mode 100644 index dc8dbf9d..00000000 --- a/charges/lizard.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/lochaberAxe.svg b/charges/lochaberAxe.svg deleted file mode 100644 index cf09c61e..00000000 --- a/charges/lochaberAxe.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/charges/log.svg b/charges/log.svg deleted file mode 100644 index 387fad44..00000000 --- a/charges/log.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/charges/lozenge.svg b/charges/lozenge.svg deleted file mode 100644 index 4cfb22c9..00000000 --- a/charges/lozenge.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/lozengeFaceted.svg b/charges/lozengeFaceted.svg deleted file mode 100644 index 63a575e3..00000000 --- a/charges/lozengeFaceted.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/charges/lozengePloye.svg b/charges/lozengePloye.svg deleted file mode 100644 index 0187c681..00000000 --- a/charges/lozengePloye.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/lute.svg b/charges/lute.svg deleted file mode 100644 index c88cc397..00000000 --- a/charges/lute.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/charges/lymphad.svg b/charges/lymphad.svg deleted file mode 100644 index 457f10d7..00000000 --- a/charges/lymphad.svg +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/lyre.svg b/charges/lyre.svg deleted file mode 100644 index d89b8550..00000000 --- a/charges/lyre.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/charges/mace.svg b/charges/mace.svg deleted file mode 100644 index a3f0e074..00000000 --- a/charges/mace.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/maces.svg b/charges/maces.svg deleted file mode 100644 index 93988b80..00000000 --- a/charges/maces.svg +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/mallet.svg b/charges/mallet.svg deleted file mode 100644 index ecb418f9..00000000 --- a/charges/mallet.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/charges/mantle.svg b/charges/mantle.svg deleted file mode 100644 index 5493c30b..00000000 --- a/charges/mantle.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/mapleLeaf.svg b/charges/mapleLeaf.svg deleted file mode 100644 index 93e63767..00000000 --- a/charges/mapleLeaf.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/charges/martenCourant.svg b/charges/martenCourant.svg deleted file mode 100644 index 1760d038..00000000 --- a/charges/martenCourant.svg +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/mascle.svg b/charges/mascle.svg deleted file mode 100644 index b867e47a..00000000 --- a/charges/mascle.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/mastiffStatant.svg b/charges/mastiffStatant.svg deleted file mode 100644 index 14feb266..00000000 --- a/charges/mastiffStatant.svg +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/millstone.svg b/charges/millstone.svg deleted file mode 100644 index f8d523ca..00000000 --- a/charges/millstone.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/charges/mitre.svg b/charges/mitre.svg deleted file mode 100644 index 1a20e002..00000000 --- a/charges/mitre.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/monk.svg b/charges/monk.svg deleted file mode 100644 index 8ede0359..00000000 --- a/charges/monk.svg +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/moonInCrescent.svg b/charges/moonInCrescent.svg deleted file mode 100644 index 27fdb512..00000000 --- a/charges/moonInCrescent.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/mullet.svg b/charges/mullet.svg deleted file mode 100644 index 2658e971..00000000 --- a/charges/mullet.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/mullet10.svg b/charges/mullet10.svg deleted file mode 100644 index 60ed608a..00000000 --- a/charges/mullet10.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/mullet4.svg b/charges/mullet4.svg deleted file mode 100644 index 37242f99..00000000 --- a/charges/mullet4.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/mullet6.svg b/charges/mullet6.svg deleted file mode 100644 index 1a1972aa..00000000 --- a/charges/mullet6.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/mullet6Faceted.svg b/charges/mullet6Faceted.svg deleted file mode 100644 index 1ca0c335..00000000 --- a/charges/mullet6Faceted.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/charges/mullet6Pierced.svg b/charges/mullet6Pierced.svg deleted file mode 100644 index 96d6f279..00000000 --- a/charges/mullet6Pierced.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/mullet7.svg b/charges/mullet7.svg deleted file mode 100644 index 53321978..00000000 --- a/charges/mullet7.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/mullet8.svg b/charges/mullet8.svg deleted file mode 100644 index 0239a883..00000000 --- a/charges/mullet8.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/mulletFaceted.svg b/charges/mulletFaceted.svg deleted file mode 100644 index a43fe26e..00000000 --- a/charges/mulletFaceted.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/charges/mulletPierced.svg b/charges/mulletPierced.svg deleted file mode 100644 index b469bf0c..00000000 --- a/charges/mulletPierced.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/oak.svg b/charges/oak.svg deleted file mode 100644 index b01da9b4..00000000 --- a/charges/oak.svg +++ /dev/null @@ -1,347 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/orb.svg b/charges/orb.svg deleted file mode 100644 index 2d7354f5..00000000 --- a/charges/orb.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/ouroboros.svg b/charges/ouroboros.svg deleted file mode 100644 index f0f39146..00000000 --- a/charges/ouroboros.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/charges/owl.svg b/charges/owl.svg deleted file mode 100644 index 015a7f81..00000000 --- a/charges/owl.svg +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/owlDisplayed.svg b/charges/owlDisplayed.svg deleted file mode 100644 index 353fe5e7..00000000 --- a/charges/owlDisplayed.svg +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/palace.svg b/charges/palace.svg deleted file mode 100644 index 9e03dd4b..00000000 --- a/charges/palace.svg +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/palmTree.svg b/charges/palmTree.svg deleted file mode 100644 index 590d14a3..00000000 --- a/charges/palmTree.svg +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/parrot.svg b/charges/parrot.svg deleted file mode 100644 index 92d7dd10..00000000 --- a/charges/parrot.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/peacock.svg b/charges/peacock.svg deleted file mode 100644 index 064831f4..00000000 --- a/charges/peacock.svg +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/peacockInPride.svg b/charges/peacockInPride.svg deleted file mode 100644 index b8b4f8c7..00000000 --- a/charges/peacockInPride.svg +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/pear.svg b/charges/pear.svg deleted file mode 100644 index d421e208..00000000 --- a/charges/pear.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/pegasus.svg b/charges/pegasus.svg deleted file mode 100644 index 5335022d..00000000 --- a/charges/pegasus.svg +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/pike.svg b/charges/pike.svg deleted file mode 100644 index 812002b7..00000000 --- a/charges/pike.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/charges/pillar.svg b/charges/pillar.svg deleted file mode 100644 index d9aa943f..00000000 --- a/charges/pillar.svg +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/pincers.svg b/charges/pincers.svg deleted file mode 100644 index 2e91f728..00000000 --- a/charges/pincers.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/charges/pineCone.svg b/charges/pineCone.svg deleted file mode 100644 index c326f2a2..00000000 --- a/charges/pineCone.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/pineTree.svg b/charges/pineTree.svg deleted file mode 100644 index 2abebe11..00000000 --- a/charges/pineTree.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/charges/pique.svg b/charges/pique.svg deleted file mode 100644 index 06c5836e..00000000 --- a/charges/pique.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/plaice.svg b/charges/plaice.svg deleted file mode 100644 index 8325d1ca..00000000 --- a/charges/plaice.svg +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/plough.svg b/charges/plough.svg deleted file mode 100644 index 7c1f42fc..00000000 --- a/charges/plough.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/charges/ploughshare.svg b/charges/ploughshare.svg deleted file mode 100644 index 45928f03..00000000 --- a/charges/ploughshare.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/porcupine.svg b/charges/porcupine.svg deleted file mode 100644 index bdc53081..00000000 --- a/charges/porcupine.svg +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/portcullis.svg b/charges/portcullis.svg deleted file mode 100644 index de154326..00000000 --- a/charges/portcullis.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/pot.svg b/charges/pot.svg deleted file mode 100644 index 64cc0ff6..00000000 --- a/charges/pot.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/charges/quatrefoil.svg b/charges/quatrefoil.svg deleted file mode 100644 index ff33f762..00000000 --- a/charges/quatrefoil.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/charges/rabbitSejant.svg b/charges/rabbitSejant.svg deleted file mode 100644 index c61e0a9b..00000000 --- a/charges/rabbitSejant.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/raft.svg b/charges/raft.svg deleted file mode 100644 index d5b728b4..00000000 --- a/charges/raft.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/charges/rake.svg b/charges/rake.svg deleted file mode 100644 index 6feed725..00000000 --- a/charges/rake.svg +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/ramHeadErased.svg b/charges/ramHeadErased.svg deleted file mode 100644 index c971f7b4..00000000 --- a/charges/ramHeadErased.svg +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/ramPassant.svg b/charges/ramPassant.svg deleted file mode 100644 index 421e416c..00000000 --- a/charges/ramPassant.svg +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/ramsHorn.svg b/charges/ramsHorn.svg deleted file mode 100644 index 26585cc9..00000000 --- a/charges/ramsHorn.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/rapier.svg b/charges/rapier.svg deleted file mode 100644 index fed83920..00000000 --- a/charges/rapier.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/ratRampant.svg b/charges/ratRampant.svg deleted file mode 100644 index 13c6746a..00000000 --- a/charges/ratRampant.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/raven.svg b/charges/raven.svg deleted file mode 100644 index 6e3c4eca..00000000 --- a/charges/raven.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/rhinoceros.svg b/charges/rhinoceros.svg deleted file mode 100644 index 1d43c4f4..00000000 --- a/charges/rhinoceros.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/ribbon1.svg b/charges/ribbon1.svg deleted file mode 100644 index 03bf3515..00000000 --- a/charges/ribbon1.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/charges/ribbon2.svg b/charges/ribbon2.svg deleted file mode 100644 index 0f15bb04..00000000 --- a/charges/ribbon2.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/charges/ribbon3.svg b/charges/ribbon3.svg deleted file mode 100644 index dd168991..00000000 --- a/charges/ribbon3.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/charges/ribbon4.svg b/charges/ribbon4.svg deleted file mode 100644 index bab35959..00000000 --- a/charges/ribbon4.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/charges/ribbon5.svg b/charges/ribbon5.svg deleted file mode 100644 index 3c718bce..00000000 --- a/charges/ribbon5.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/charges/ribbon6.svg b/charges/ribbon6.svg deleted file mode 100644 index a32eede7..00000000 --- a/charges/ribbon6.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/charges/ribbon7.svg b/charges/ribbon7.svg deleted file mode 100644 index 2d9a1e21..00000000 --- a/charges/ribbon7.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/charges/ribbon8.svg b/charges/ribbon8.svg deleted file mode 100644 index f7c672a7..00000000 --- a/charges/ribbon8.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/charges/rose.svg b/charges/rose.svg deleted file mode 100644 index 7ce11665..00000000 --- a/charges/rose.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/charges/roundel.svg b/charges/roundel.svg deleted file mode 100644 index 344991ed..00000000 --- a/charges/roundel.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/roundel2.svg b/charges/roundel2.svg deleted file mode 100644 index fffa7ad4..00000000 --- a/charges/roundel2.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/charges/rustre.svg b/charges/rustre.svg deleted file mode 100644 index 60c253a1..00000000 --- a/charges/rustre.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/sabre.svg b/charges/sabre.svg deleted file mode 100644 index 0f1f002d..00000000 --- a/charges/sabre.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/charges/sabre2.svg b/charges/sabre2.svg deleted file mode 100644 index 2466a761..00000000 --- a/charges/sabre2.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/charges/sabresCrossed.svg b/charges/sabresCrossed.svg deleted file mode 100644 index e9cec5f4..00000000 --- a/charges/sabresCrossed.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/sagittarius.svg b/charges/sagittarius.svg deleted file mode 100644 index ac5eaeeb..00000000 --- a/charges/sagittarius.svg +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/salmon.svg b/charges/salmon.svg deleted file mode 100644 index bda9bf49..00000000 --- a/charges/salmon.svg +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/saw.svg b/charges/saw.svg deleted file mode 100644 index c356263f..00000000 --- a/charges/saw.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/charges/scale.svg b/charges/scale.svg deleted file mode 100644 index b2da96ea..00000000 --- a/charges/scale.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/scaleImbalanced.svg b/charges/scaleImbalanced.svg deleted file mode 100644 index ea151649..00000000 --- a/charges/scaleImbalanced.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/scalesHanging.svg b/charges/scalesHanging.svg deleted file mode 100644 index 1065211b..00000000 --- a/charges/scalesHanging.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/sceptre.svg b/charges/sceptre.svg deleted file mode 100644 index 57869cbf..00000000 --- a/charges/sceptre.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/scissors.svg b/charges/scissors.svg deleted file mode 100644 index a7437f1e..00000000 --- a/charges/scissors.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/charges/scissors2.svg b/charges/scissors2.svg deleted file mode 100644 index 109d8238..00000000 --- a/charges/scissors2.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/charges/scorpion.svg b/charges/scorpion.svg deleted file mode 100644 index c132511d..00000000 --- a/charges/scorpion.svg +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/scrollClosed.svg b/charges/scrollClosed.svg deleted file mode 100644 index 1f7d8034..00000000 --- a/charges/scrollClosed.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/charges/scythe.svg b/charges/scythe.svg deleted file mode 100644 index b8d0a04d..00000000 --- a/charges/scythe.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/charges/scythe2.svg b/charges/scythe2.svg deleted file mode 100644 index 7fa9de5d..00000000 --- a/charges/scythe2.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/charges/serpent.svg b/charges/serpent.svg deleted file mode 100644 index e12c9570..00000000 --- a/charges/serpent.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/sextifoil.svg b/charges/sextifoil.svg deleted file mode 100644 index ad6e3303..00000000 --- a/charges/sextifoil.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/charges/shears.svg b/charges/shears.svg deleted file mode 100644 index 3b3daeb4..00000000 --- a/charges/shears.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/charges/shield.svg b/charges/shield.svg deleted file mode 100644 index 89ad41de..00000000 --- a/charges/shield.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/shipWheel.svg b/charges/shipWheel.svg deleted file mode 100644 index fa23136c..00000000 --- a/charges/shipWheel.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/sickle.svg b/charges/sickle.svg deleted file mode 100644 index 753eeeaa..00000000 --- a/charges/sickle.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/charges/skeleton.svg b/charges/skeleton.svg deleted file mode 100644 index cde28dae..00000000 --- a/charges/skeleton.svg +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/skull.svg b/charges/skull.svg deleted file mode 100644 index c7dc7044..00000000 --- a/charges/skull.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/skull2.svg b/charges/skull2.svg deleted file mode 100644 index a580afd7..00000000 --- a/charges/skull2.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/charges/snail.svg b/charges/snail.svg deleted file mode 100644 index 387dc48a..00000000 --- a/charges/snail.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/charges/snake.svg b/charges/snake.svg deleted file mode 100644 index 532f2c0c..00000000 --- a/charges/snake.svg +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/snowflake.svg b/charges/snowflake.svg deleted file mode 100644 index d85d067b..00000000 --- a/charges/snowflake.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/spear.svg b/charges/spear.svg deleted file mode 100644 index 9944f9d5..00000000 --- a/charges/spear.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/charges/spiral.svg b/charges/spiral.svg deleted file mode 100644 index 05736127..00000000 --- a/charges/spiral.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/squirrel.svg b/charges/squirrel.svg deleted file mode 100644 index bf2cc68b..00000000 --- a/charges/squirrel.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/stagLodgedRegardant.svg b/charges/stagLodgedRegardant.svg deleted file mode 100644 index 024f648c..00000000 --- a/charges/stagLodgedRegardant.svg +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/stagPassant.svg b/charges/stagPassant.svg deleted file mode 100644 index 745ed25e..00000000 --- a/charges/stagPassant.svg +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/stagsAttires.svg b/charges/stagsAttires.svg deleted file mode 100644 index c8b3692b..00000000 --- a/charges/stagsAttires.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/charges/stirrup.svg b/charges/stirrup.svg deleted file mode 100644 index 4350ad26..00000000 --- a/charges/stirrup.svg +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/sun.svg b/charges/sun.svg deleted file mode 100644 index 6d58a55c..00000000 --- a/charges/sun.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/sunInSplendour.svg b/charges/sunInSplendour.svg deleted file mode 100644 index 4de9c571..00000000 --- a/charges/sunInSplendour.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/charges/sunInSplendour2.svg b/charges/sunInSplendour2.svg deleted file mode 100644 index d56c221d..00000000 --- a/charges/sunInSplendour2.svg +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/swallow.svg b/charges/swallow.svg deleted file mode 100644 index bf363a15..00000000 --- a/charges/swallow.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/swan.svg b/charges/swan.svg deleted file mode 100644 index 26a345f7..00000000 --- a/charges/swan.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/swanErased.svg b/charges/swanErased.svg deleted file mode 100644 index 510c380a..00000000 --- a/charges/swanErased.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/charges/sword.svg b/charges/sword.svg deleted file mode 100644 index cdf8853b..00000000 --- a/charges/sword.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/charges/talbotPassant.svg b/charges/talbotPassant.svg deleted file mode 100644 index 121e6ba4..00000000 --- a/charges/talbotPassant.svg +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/talbotSejant.svg b/charges/talbotSejant.svg deleted file mode 100644 index e89d4b90..00000000 --- a/charges/talbotSejant.svg +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/template.svg b/charges/template.svg deleted file mode 100644 index cad51295..00000000 --- a/charges/template.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/thistle.svg b/charges/thistle.svg deleted file mode 100644 index 09cff52a..00000000 --- a/charges/thistle.svg +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/tower.svg b/charges/tower.svg deleted file mode 100644 index 9754803a..00000000 --- a/charges/tower.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/charges/tree.svg b/charges/tree.svg deleted file mode 100644 index 0e2854fc..00000000 --- a/charges/tree.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/charges/trefle.svg b/charges/trefle.svg deleted file mode 100644 index 8180526b..00000000 --- a/charges/trefle.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/trefoil.svg b/charges/trefoil.svg deleted file mode 100644 index 438c993e..00000000 --- a/charges/trefoil.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/charges/triangle.svg b/charges/triangle.svg deleted file mode 100644 index 0a06d67c..00000000 --- a/charges/triangle.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/trianglePierced.svg b/charges/trianglePierced.svg deleted file mode 100644 index 6bbe2fc2..00000000 --- a/charges/trianglePierced.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/charges/trowel.svg b/charges/trowel.svg deleted file mode 100644 index b9533474..00000000 --- a/charges/trowel.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/charges/unicornRampant.svg b/charges/unicornRampant.svg deleted file mode 100644 index a3102dbc..00000000 --- a/charges/unicornRampant.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/wasp.svg b/charges/wasp.svg deleted file mode 100644 index 9d54306c..00000000 --- a/charges/wasp.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/wheatStalk.svg b/charges/wheatStalk.svg deleted file mode 100644 index c6113ccd..00000000 --- a/charges/wheatStalk.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/wheel.svg b/charges/wheel.svg deleted file mode 100644 index 6133eee9..00000000 --- a/charges/wheel.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/windmill.svg b/charges/windmill.svg deleted file mode 100644 index b814ef1e..00000000 --- a/charges/windmill.svg +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/wing.svg b/charges/wing.svg deleted file mode 100644 index d38622f2..00000000 --- a/charges/wing.svg +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/wingSword.svg b/charges/wingSword.svg deleted file mode 100644 index 75c2f80e..00000000 --- a/charges/wingSword.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/wolfHeadErased.svg b/charges/wolfHeadErased.svg deleted file mode 100644 index 518ea83f..00000000 --- a/charges/wolfHeadErased.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/charges/wolfPassant.svg b/charges/wolfPassant.svg deleted file mode 100644 index 06f8761a..00000000 --- a/charges/wolfPassant.svg +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/wolfRampant.svg b/charges/wolfRampant.svg deleted file mode 100644 index f5c7f57c..00000000 --- a/charges/wolfRampant.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/wolfStatant.svg b/charges/wolfStatant.svg deleted file mode 100644 index d592b9ef..00000000 --- a/charges/wolfStatant.svg +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/wyvern.svg b/charges/wyvern.svg deleted file mode 100644 index f09b821e..00000000 --- a/charges/wyvern.svg +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/charges/wyvernWithWingsDisplayed.svg b/charges/wyvernWithWingsDisplayed.svg deleted file mode 100644 index d3aef9b4..00000000 --- a/charges/wyvernWithWingsDisplayed.svg +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/components/fill-box.js b/components/fill-box.js deleted file mode 100644 index b4d075c3..00000000 --- a/components/fill-box.js +++ /dev/null @@ -1,74 +0,0 @@ -{ - const style = /* css */ ` - fill-box:not([disabled]) { - cursor: pointer; - } - - fill-box > svg { - vertical-align: middle; - pointer-events: none; - } - - fill-box > svg > rect { - stroke: #666666; - stroke-width: 2; - } - `; - - const styleElement = document.createElement("style"); - styleElement.setAttribute("type", "text/css"); - styleElement.innerHTML = style; - document.head.appendChild(styleElement); -} - -{ - const template = document.createElement("template"); - template.innerHTML = /* html */ ` - - - - `; - - class FillBox extends HTMLElement { - constructor() { - super(); - - this.appendChild(template.content.cloneNode(true)); - this.querySelector("rect")?.setAttribute("fill", this.fill); - this.querySelector("svg")?.setAttribute("width", this.size); - this.querySelector("svg")?.setAttribute("height", this.size); - } - - static showTip() { - tip(this.tip); - } - - connectedCallback() { - this.addEventListener("mousemove", this.constructor.showTip); - } - - disconnectedCallback() { - this.removeEventListener("mousemove", this.constructor.showTip); - } - - get fill() { - return this.getAttribute("fill") || "#333"; - } - - set fill(newFill) { - this.setAttribute("fill", newFill); - this.querySelector("rect")?.setAttribute("fill", newFill); - } - - get size() { - return this.getAttribute("size") || "1em"; - } - - get tip() { - return this.dataset.tip || "Fill style. Click to change"; - } - } - - // cannot use Shadow DOM here as need an access to svg hatches - customElements.define("fill-box", FillBox); -} diff --git a/components/slider-input.js b/components/slider-input.js deleted file mode 100644 index f1732027..00000000 --- a/components/slider-input.js +++ /dev/null @@ -1,78 +0,0 @@ -{ - const style = /* css */ ` - slider-input { - display: flex; - align-items: center; - gap: .4em; - } - `; - - const styleElement = document.createElement("style"); - styleElement.setAttribute("type", "text/css"); - styleElement.innerHTML = style; - document.head.appendChild(styleElement); -} - -{ - const template = document.createElement("template"); - template.innerHTML = /* html */ ` - - - `; - - class SliderInput extends HTMLElement { - constructor() { - super(); - this.appendChild(template.content.cloneNode(true)); - - const range = this.querySelector("input[type=range]"); - const number = this.querySelector("input[type=number]"); - - range.value = number.value = this.value || this.getAttribute("value") || 50; - range.min = number.min = this.getAttribute("min") || 0; - range.max = number.max = this.getAttribute("max") || 100; - range.step = number.step = this.getAttribute("step") || 1; - - range.addEventListener("input", this.handleEvent.bind(this)); - number.addEventListener("input", this.handleEvent.bind(this)); - range.addEventListener("change", this.handleEvent.bind(this)); - number.addEventListener("change", this.handleEvent.bind(this)); - } - - handleEvent(e) { - const value = e.target.value; - const isNaN = Number.isNaN(Number(value)); - if (isNaN || value === "") return e.stopPropagation(); - - const range = this.querySelector("input[type=range]"); - const number = this.querySelector("input[type=number]"); - this.value = range.value = number.value = value; - - this.dispatchEvent( - new CustomEvent(e.type, { - detail: {value}, - bubbles: true, - composed: true - }) - ); - } - - set value(value) { - const range = this.querySelector("input[type=range]"); - const number = this.querySelector("input[type=number]"); - range.value = number.value = value; - } - - get value() { - const number = this.querySelector("input[type=number]"); - return number.value; - } - - get valueAsNumber() { - const number = this.querySelector("input[type=number]"); - return number.valueAsNumber; - } - } - - customElements.define("slider-input", SliderInput); -} diff --git a/config/heightmap-templates.js b/config/heightmap-templates.js deleted file mode 100644 index 29738609..00000000 --- a/config/heightmap-templates.js +++ /dev/null @@ -1,166 +0,0 @@ -"use strict"; - -const heightmapTemplates = (function () { - const volcano = `Hill 1 90-100 44-56 40-60 - Multiply 0.8 50-100 0 0 - Range 1.5 30-55 45-55 40-60 - Smooth 3 0 0 0 - Hill 1.5 35-45 25-30 20-75 - Hill 1 35-55 75-80 25-75 - Hill 0.5 20-25 10-15 20-25 - Mask 3 0 0 0`; - - const highIsland = `Hill 1 90-100 65-75 47-53 - Add 7 all 0 0 - Hill 5-6 20-30 25-55 45-55 - Range 1 40-50 45-55 45-55 - Multiply 0.8 land 0 0 - Mask 3 0 0 0 - Smooth 2 0 0 0 - Trough 2-3 20-30 20-30 20-30 - Trough 2-3 20-30 60-80 70-80 - Hill 1 10-15 60-60 50-50 - Hill 1.5 13-16 15-20 20-75 - Range 1.5 30-40 15-85 30-40 - Range 1.5 30-40 15-85 60-70 - Pit 3-5 10-30 15-85 20-80`; - - const lowIsland = `Hill 1 90-99 60-80 45-55 - Hill 1-2 20-30 10-30 10-90 - Smooth 2 0 0 0 - Hill 6-7 25-35 20-70 30-70 - Range 1 40-50 45-55 45-55 - Trough 2-3 20-30 15-85 20-30 - Trough 2-3 20-30 15-85 70-80 - Hill 1.5 10-15 5-15 20-80 - Hill 1 10-15 85-95 70-80 - Pit 5-7 15-25 15-85 20-80 - Multiply 0.4 20-100 0 0 - Mask 4 0 0 0`; - - const continents = `Hill 1 80-85 60-80 40-60 - Hill 1 80-85 20-30 40-60 - Hill 6-7 15-30 25-75 15-85 - Multiply 0.6 land 0 0 - Hill 8-10 5-10 15-85 20-80 - Range 1-2 30-60 5-15 25-75 - Range 1-2 30-60 80-95 25-75 - Range 0-3 30-60 80-90 20-80 - Strait 2 vertical 0 0 - Strait 1 vertical 0 0 - Smooth 3 0 0 0 - Trough 3-4 15-20 15-85 20-80 - Trough 3-4 5-10 45-55 45-55 - Pit 3-4 10-20 15-85 20-80 - Mask 4 0 0 0`; - - const archipelago = `Add 11 all 0 0 - Range 2-3 40-60 20-80 20-80 - Hill 5 15-20 10-90 30-70 - Hill 2 10-15 10-30 20-80 - Hill 2 10-15 60-90 20-80 - Smooth 3 0 0 0 - Trough 10 20-30 5-95 5-95 - Strait 2 vertical 0 0 - Strait 2 horizontal 0 0`; - - const atoll = `Hill 1 75-80 50-60 45-55 - Hill 1.5 30-50 25-75 30-70 - Hill .5 30-50 25-35 30-70 - Smooth 1 0 0 0 - Multiply 0.2 25-100 0 0 - Hill 0.5 10-20 50-55 48-52`; - - const mediterranean = `Range 4-6 30-80 0-100 0-10 - Range 4-6 30-80 0-100 90-100 - Hill 6-8 30-50 10-90 0-5 - Hill 6-8 30-50 10-90 95-100 - Multiply 0.9 land 0 0 - Mask -2 0 0 0 - Smooth 1 0 0 0 - Hill 2-3 30-70 0-5 20-80 - Hill 2-3 30-70 95-100 20-80 - Trough 3-6 40-50 0-100 0-10 - Trough 3-6 40-50 0-100 90-100`; - - const peninsula = `Range 2-3 20-35 40-50 0-15 - Add 5 all 0 0 - Hill 1 90-100 10-90 0-5 - Add 13 all 0 0 - Hill 3-4 3-5 5-95 80-100 - Hill 1-2 3-5 5-95 40-60 - Trough 5-6 10-25 5-95 5-95 - Smooth 3 0 0 0 - Invert 0.4 both 0 0`; - - const pangea = `Hill 1-2 25-40 15-50 0-10 - Hill 1-2 5-40 50-85 0-10 - Hill 1-2 25-40 50-85 90-100 - Hill 1-2 5-40 15-50 90-100 - Hill 8-12 20-40 20-80 48-52 - Smooth 2 0 0 0 - Multiply 0.7 land 0 0 - Trough 3-4 25-35 5-95 10-20 - Trough 3-4 25-35 5-95 80-90 - Range 5-6 30-40 10-90 35-65`; - - const isthmus = `Hill 5-10 15-30 0-30 0-20 - Hill 5-10 15-30 10-50 20-40 - Hill 5-10 15-30 30-70 40-60 - Hill 5-10 15-30 50-90 60-80 - Hill 5-10 15-30 70-100 80-100 - Smooth 2 0 0 0 - Trough 4-8 15-30 0-30 0-20 - Trough 4-8 15-30 10-50 20-40 - Trough 4-8 15-30 30-70 40-60 - Trough 4-8 15-30 50-90 60-80 - Trough 4-8 15-30 70-100 80-100 - Invert 0.25 x 0 0`; - - const shattered = `Hill 8 35-40 15-85 30-70 - Trough 10-20 40-50 5-95 5-95 - Range 5-7 30-40 10-90 20-80 - Pit 12-20 30-40 15-85 20-80`; - - const taklamakan = `Hill 1-3 20-30 30-70 30-70 - Hill 2-4 60-85 0-5 0-100 - Hill 2-4 60-85 95-100 0-100 - Hill 3-4 60-85 20-80 0-5 - Hill 3-4 60-85 20-80 95-100 - Smooth 3 0 0 0`; - - const oldWorld = `Range 3 70 15-85 20-80 - Hill 2-3 50-70 15-45 20-80 - Hill 2-3 50-70 65-85 20-80 - Hill 4-6 20-25 15-85 20-80 - Multiply 0.5 land 0 0 - Smooth 2 0 0 0 - Range 3-4 20-50 15-35 20-45 - Range 2-4 20-50 65-85 45-80 - Strait 3-7 vertical 0 0 - Trough 6-8 20-50 15-85 45-65 - Pit 5-6 20-30 10-90 10-90`; - - const fractious = `Hill 12-15 50-80 5-95 5-95 - Mask -1.5 0 0 0 - Mask 3 0 0 0 - Add -20 30-100 0 0 - Range 6-8 40-50 5-95 10-90`; - - return { - volcano: {id: 0, name: "Volcano", template: volcano, probability: 3}, - highIsland: {id: 1, name: "High Island", template: highIsland, probability: 19}, - lowIsland: {id: 2, name: "Low Island", template: lowIsland, probability: 9}, - continents: {id: 3, name: "Continents", template: continents, probability: 16}, - archipelago: {id: 4, name: "Archipelago", template: archipelago, probability: 18}, - atoll: {id: 5, name: "Atoll", template: atoll, probability: 1}, - mediterranean: {id: 6, name: "Mediterranean", template: mediterranean, probability: 5}, - peninsula: {id: 7, name: "Peninsula", template: peninsula, probability: 3}, - pangea: {id: 8, name: "Pangea", template: pangea, probability: 5}, - isthmus: {id: 9, name: "Isthmus", template: isthmus, probability: 2}, - shattered: {id: 10, name: "Shattered", template: shattered, probability: 7}, - taklamakan: {id: 11, name: "Taklamakan", template: taklamakan, probability: 1}, - oldWorld: {id: 12, name: "Old World", template: oldWorld, probability: 8}, - fractious: {id: 13, name: "Fractious", template: fractious, probability: 3} - }; -})(); diff --git a/config/precreated-heightmaps.js b/config/precreated-heightmaps.js deleted file mode 100644 index 22f45abd..00000000 --- a/config/precreated-heightmaps.js +++ /dev/null @@ -1,27 +0,0 @@ -"use strict"; - -const precreatedHeightmaps = { - "africa-centric": {id: 0, name: "Africa Centric"}, - arabia: {id: 1, name: "Arabia"}, - atlantics: {id: 2, name: "Atlantics"}, - britain: {id: 3, name: "Britain"}, - caribbean: {id: 4, name: "Caribbean"}, - "east-asia": {id: 5, name: "East Asia"}, - eurasia: {id: 6, name: "Eurasia"}, - europe: {id: 7, name: "Europe"}, - "europe-accented": {id: 8, name: "Europe Accented"}, - "europe-and-central-asia": {id: 9, name: "Europe and Central Asia"}, - "europe-central": {id: 10, name: "Europe Central"}, - "europe-north": {id: 11, name: "Europe North"}, - greenland: {id: 12, name: "Greenland"}, - hellenica: {id: 13, name: "Hellenica"}, - iceland: {id: 14, name: "Iceland"}, - "indian-ocean": {id: 15, name: "Indian Ocean"}, - "mediterranean-sea": {id: 16, name: "Mediterranean Sea"}, - "middle-east": {id: 17, name: "Middle East"}, - "north-america": {id: 18, name: "North America"}, - "us-centric": {id: 19, name: "US-centric"}, - "us-mainland": {id: 20, name: "US Mainland"}, - world: {id: 21, name: "World"}, - "world-from-pacific": {id: 22, name: "World from Pacific"} -}; diff --git a/dropbox.html b/dropbox.html deleted file mode 100644 index cd1921da..00000000 --- a/dropbox.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - FMG Dropbox Auth - - - - - diff --git a/fonts.css b/fonts.css new file mode 100644 index 00000000..c1cd22bc --- /dev/null +++ b/fonts.css @@ -0,0 +1,175 @@ +@font-face { + font-family: 'Amatic SC'; + font-style: normal; + font-weight: 700; + src: local('Amatic SC Bold'), local('AmaticSC-Bold'), url(https://fonts.gstatic.com/s/amaticsc/v11/TUZ3zwprpvBS1izr_vOMscGKfrUC.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + +@font-face { + font-family: 'Architects Daughter'; + font-style: normal; + font-weight: 400; + src: local('Architects Daughter Regular'), local('ArchitectsDaughter-Regular'), url(https://fonts.gstatic.com/s/architectsdaughter/v8/RXTgOOQ9AAtaVOHxx0IUBM3t7GjCYufj5TXV5VnA2p8.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; +} + +@font-face { + font-family: 'Bitter'; + font-style: normal; + font-weight: 400; + src: local('Bitter Regular'), local('Bitter-Regular'), url(https://fonts.gstatic.com/s/bitter/v12/zfs6I-5mjWQ3nxqccMoL2A.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; +} + +@font-face { + font-family: 'Caesar Dressing'; + font-style: normal; + font-weight: 400; + src: local('Caesar Dressing'), local('CaesarDressing-Regular'), url(https://fonts.gstatic.com/s/caesardressing/v6/yYLx0hLa3vawqtwdswbotmK4vrRHdrz7.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + +@font-face { + font-family: 'Cinzel'; + font-style: normal; + font-weight: 400; + src: local('Cinzel Regular'), local('Cinzel-Regular'), url(https://fonts.gstatic.com/s/cinzel/v7/zOdksD_UUTk1LJF9z4tURA.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; +} + +@font-face { + font-family: 'Comfortaa'; + font-style: normal; + font-weight: 700; + src: local('Comfortaa Bold'), local('Comfortaa-Bold'), url(https://fonts.gstatic.com/s/comfortaa/v12/fND5XPYKrF2tQDwwfWZJI-gdm0LZdjqr5-oayXSOefg.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; +} + +@font-face { + font-family: 'Dancing Script'; + font-style: normal; + font-weight: 700; + src: local('Dancing Script Bold'), local('DancingScript-Bold'), url(https://fonts.gstatic.com/s/dancingscript/v9/KGBfwabt0ZRLA5W1ywjowUHdOuSHeh0r6jGTOGdAKHA.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; +} + +@font-face { + font-family: 'Fredericka the Great'; + font-style: normal; + font-weight: 400; + src: local('Fredericka the Great'), local('FrederickatheGreat'), url(https://fonts.gstatic.com/s/frederickathegreat/v6/9Bt33CxNwt7aOctW2xjbCstzwVKsIBVV--Sjxbc.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + +@font-face { + font-family: 'Gloria Hallelujah'; + font-style: normal; + font-weight: 400; + src: local('Gloria Hallelujah'), local('GloriaHallelujah'), url(https://fonts.gstatic.com/s/gloriahallelujah/v9/CA1k7SlXcY5kvI81M_R28cNDay8z-hHR7F16xrcXsJw.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; +} + +@font-face { + font-family: 'Great Vibes'; + font-style: normal; + font-weight: 400; + src: local('Great Vibes'), local('GreatVibes-Regular'), url(https://fonts.gstatic.com/s/greatvibes/v5/6q1c0ofG6NKsEhAc2eh-3Y4P5ICox8Kq3LLUNMylGO4.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; +} + +@font-face { + font-family: 'IM Fell English'; + font-style: normal; + font-weight: 400; + src: local('IM FELL English Roman'), local('IM_FELL_English_Roman'), url(https://fonts.gstatic.com/s/imfellenglish/v7/xwIisCqGFi8pff-oa9uSVAkYLEKE0CJQa8tfZYc_plY.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; +} + +@font-face { + font-family: 'Kaushan Script'; + font-style: normal; + font-weight: 400; + src: local('Kaushan Script'), local('KaushanScript-Regular'), url(https://fonts.gstatic.com/s/kaushanscript/v6/qx1LSqts-NtiKcLw4N03IEd0sm1ffa_JvZxsF_BEwQk.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; +} + +@font-face { + font-family: 'MedievalSharp'; + font-style: normal; + font-weight: 400; + src: local('MedievalSharp'), url(https://fonts.gstatic.com/s/medievalsharp/v9/EvOJzAlL3oU5AQl2mP5KdgptMqhwMg.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + +@font-face { + font-family: 'Metamorphous'; + font-style: normal; + font-weight: 400; + src: local('Metamorphous'), url(https://fonts.gstatic.com/s/metamorphous/v7/Wnz8HA03aAXcC39ZEX5y133EOyqs.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + +@font-face { + font-family: 'Montez'; + font-style: normal; + font-weight: 400; + src: local('Montez Regular'), local('Montez-Regular'), url(https://fonts.gstatic.com/s/montez/v8/aq8el3-0osHIcFK6bXAPkw.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; +} + +@font-face { + font-family: 'Nova Script'; + font-style: normal; + font-weight: 400; + src: local('Nova Script Regular'), local('NovaScript-Regular'), url(https://fonts.gstatic.com/s/novascript/v10/7Au7p_IpkSWSTWaFWkumvlQKGFw.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + +@font-face { + font-family: 'Orbitron'; + font-style: normal; + font-weight: 400; + src: local('Orbitron Regular'), local('Orbitron-Regular'), url(https://fonts.gstatic.com/s/orbitron/v9/HmnHiRzvcnQr8CjBje6GQvesZW2xOQ-xsNqO47m55DA.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; +} + +@font-face { + font-family: 'Satisfy'; + font-style: normal; + font-weight: 400; + src: local('Satisfy Regular'), local('Satisfy-Regular'), url(https://fonts.gstatic.com/s/satisfy/v8/2OzALGYfHwQjkPYWELy-cw.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; +} + +@font-face { + font-family: 'Shadows Into Light'; + font-style: normal; + font-weight: 400; + src: local('Shadows Into Light'), local('ShadowsIntoLight'), url(https://fonts.gstatic.com/s/shadowsintolight/v7/clhLqOv7MXn459PTh0gXYFK2TSYBz0eNcHnp4YqE4Ts.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; +} + +@font-face { + font-family: 'Uncial Antiqua'; + font-style: normal; + font-weight: 400; + src: local('Uncial Antiqua'), local('UncialAntiqua-Regular'), url(https://fonts.gstatic.com/s/uncialantiqua/v5/N0bM2S5WOex4OUbESzoESK-i-MfWQZQ.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + +@font-face { + font-family: 'Underdog'; + font-style: normal; + font-weight: 400; + src: local('Underdog'), local('Underdog-Regular'), url(https://fonts.gstatic.com/s/underdog/v6/CHygV-jCElj7diMroWSlWV8.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + +@font-face { + font-family: 'Yellowtail'; + font-style: normal; + font-weight: 400; + src: local('Yellowtail Regular'), local('Yellowtail-Regular'), url(https://fonts.gstatic.com/s/yellowtail/v8/GcIHC9QEwVkrA19LJU1qlPk_vArhqVIZ0nv9q090hN8.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; +} diff --git a/heightmaps/africa-centric.png b/heightmaps/africa-centric.png deleted file mode 100644 index 02e4a311..00000000 Binary files a/heightmaps/africa-centric.png and /dev/null differ diff --git a/heightmaps/arabia.png b/heightmaps/arabia.png deleted file mode 100644 index 27946711..00000000 Binary files a/heightmaps/arabia.png and /dev/null differ diff --git a/heightmaps/atlantics.png b/heightmaps/atlantics.png deleted file mode 100644 index be123705..00000000 Binary files a/heightmaps/atlantics.png and /dev/null differ diff --git a/heightmaps/britain.png b/heightmaps/britain.png deleted file mode 100644 index 60e08da4..00000000 Binary files a/heightmaps/britain.png and /dev/null differ diff --git a/heightmaps/caribbean.png b/heightmaps/caribbean.png deleted file mode 100644 index e4a8ed05..00000000 Binary files a/heightmaps/caribbean.png and /dev/null differ diff --git a/heightmaps/east-asia.png b/heightmaps/east-asia.png deleted file mode 100644 index 41144db5..00000000 Binary files a/heightmaps/east-asia.png and /dev/null differ diff --git a/heightmaps/eurasia.png b/heightmaps/eurasia.png deleted file mode 100644 index bdbdb4d7..00000000 Binary files a/heightmaps/eurasia.png and /dev/null differ diff --git a/heightmaps/europe-accented.png b/heightmaps/europe-accented.png deleted file mode 100644 index 9be9480e..00000000 Binary files a/heightmaps/europe-accented.png and /dev/null differ diff --git a/heightmaps/europe-and-central-asia.png b/heightmaps/europe-and-central-asia.png deleted file mode 100644 index c23e97ed..00000000 Binary files a/heightmaps/europe-and-central-asia.png and /dev/null differ diff --git a/heightmaps/europe-central.png b/heightmaps/europe-central.png deleted file mode 100644 index b220f546..00000000 Binary files a/heightmaps/europe-central.png and /dev/null differ diff --git a/heightmaps/europe-north.png b/heightmaps/europe-north.png deleted file mode 100644 index 1bb49184..00000000 Binary files a/heightmaps/europe-north.png and /dev/null differ diff --git a/heightmaps/europe.png b/heightmaps/europe.png deleted file mode 100644 index 59dfdfea..00000000 Binary files a/heightmaps/europe.png and /dev/null differ diff --git a/heightmaps/greenland.png b/heightmaps/greenland.png deleted file mode 100644 index 3136c539..00000000 Binary files a/heightmaps/greenland.png and /dev/null differ diff --git a/heightmaps/hellenica.png b/heightmaps/hellenica.png deleted file mode 100644 index 2681d6ec..00000000 Binary files a/heightmaps/hellenica.png and /dev/null differ diff --git a/heightmaps/iceland.png b/heightmaps/iceland.png deleted file mode 100644 index 88463158..00000000 Binary files a/heightmaps/iceland.png and /dev/null differ diff --git a/heightmaps/import-rules.txt b/heightmaps/import-rules.txt deleted file mode 100644 index 69499114..00000000 --- a/heightmaps/import-rules.txt +++ /dev/null @@ -1,8 +0,0 @@ -To get heightmap with correct height scale: -1. Open https://tangrams.github.io/heightmapper -2. Toggle off auto-exposure -3. Set max elevation to 2000 -4. Set min elevation to -500 -5. Find region you like -6. Render image -7. Optionally rescale image to a smaller size (e.g. 500x300px) as high resolution is not used diff --git a/heightmaps/indian-ocean.png b/heightmaps/indian-ocean.png deleted file mode 100644 index 860ca952..00000000 Binary files a/heightmaps/indian-ocean.png and /dev/null differ diff --git a/heightmaps/mediterranean-sea.png b/heightmaps/mediterranean-sea.png deleted file mode 100644 index 6a7c8bb3..00000000 Binary files a/heightmaps/mediterranean-sea.png and /dev/null differ diff --git a/heightmaps/middle-east.png b/heightmaps/middle-east.png deleted file mode 100644 index bfcc55bb..00000000 Binary files a/heightmaps/middle-east.png and /dev/null differ diff --git a/heightmaps/north-america.png b/heightmaps/north-america.png deleted file mode 100644 index 1c1f1ad5..00000000 Binary files a/heightmaps/north-america.png and /dev/null differ diff --git a/heightmaps/us-centric.png b/heightmaps/us-centric.png deleted file mode 100644 index 7094df6a..00000000 Binary files a/heightmaps/us-centric.png and /dev/null differ diff --git a/heightmaps/us-mainland.png b/heightmaps/us-mainland.png deleted file mode 100644 index 3b1984e7..00000000 Binary files a/heightmaps/us-mainland.png and /dev/null differ diff --git a/heightmaps/world-from-pacific.png b/heightmaps/world-from-pacific.png deleted file mode 100644 index 02043165..00000000 Binary files a/heightmaps/world-from-pacific.png and /dev/null differ diff --git a/heightmaps/world.png b/heightmaps/world.png deleted file mode 100644 index 22a79298..00000000 Binary files a/heightmaps/world.png and /dev/null differ diff --git a/icons.css b/icons.css index 4740f091..88ab7e4c 100644 --- a/icons.css +++ b/icons.css @@ -1,7 +1,6 @@ -/* FontAwesome icons, see license https://github.com/FortAwesome/Font-Awesome/blob/master/LICENSE.txt */ @font-face { font-family: 'icons'; - src: url('data:application/font-woff2;base64,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 ') format('woff2'); + src: url('data:application/font-woff2;base64,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') format('woff2'); font-weight: normal; font-style: normal; } @@ -10,6 +9,8 @@ font-family: "icons"; font-style: normal; font-weight: normal; + speak: none; + display: inline-block; text-decoration: inherit; width: 1em; @@ -24,267 +25,188 @@ line-height: 1em; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; + /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ } /* Font Awesome icons */ -.icon-pencil:before {content:'\e800';} /* '' */ -.icon-font:before {content:'\e801';} /* '' */ -.icon-arrows-cw:before {content:'\e802';} /* '' */ -.icon-doc:before {content:'\e803';} /* '' */ -.icon-trash-empty:before {content:'\e804';} /* '' */ -.icon-ok:before {content:'\e805';} /* '' */ -.icon-ok-circled:before {content:'\e806';} /* '' */ -.icon-ok-circled2:before {content:'\e807';} /* '' */ -.icon-link:before {content:'\e808';} /* '' */ -.icon-globe:before {content:'\e809';} /* '' */ -.icon-plus:before {content:'\e80a';} /* '' */ -.icon-plus-circled:before {content:'\e80b';} /* '' */ -.icon-minus-circled:before {content:'\e80c';} /* '' */ -.icon-minus:before {content:'\e80d';} /* '' */ -.icon-text-height:before {content:'\e80e';} /* '' */ -.icon-adjust:before {content:'\e80f';} /* '' */ -.icon-tag:before {content:'\e810';} /* '' */ -.icon-tags:before {content:'\e811';} /* '' */ -.icon-logout:before {content:'\e812';} /* '' */ -.icon-download:before {content:'\e813';} /* '' */ -.icon-down-circled2:before {content:'\e814';} /* '' */ -.icon-upload:before {content:'\e815';} /* '' */ -.icon-up-circled2:before {content:'\e816';} /* '' */ -.icon-cancel-circled2:before {content:'\e817';} /* '' */ -.icon-cancel-circled:before {content:'\e818';} /* '' */ -.icon-cancel:before {content:'\e819';} /* '' */ -.icon-check:before {content:'\e81a';} /* '' */ -.icon-align-left:before {content:'\e81b';} /* '' */ -.icon-align-center:before {content:'\e81c';} /* '' */ -.icon-align-right:before {content:'\e81d';} /* '' */ -.icon-align-justify:before {content:'\e81e';} /* '' */ -.icon-star:before {content:'\e81f';} /* '' */ -.icon-star-empty:before {content:'\e820';} /* '' */ -.icon-search:before {content:'\e821';} /* '' */ -.icon-mail:before {content:'\e822';} /* '' */ -.icon-eye:before {content:'\e823';} /* '' */ -.icon-eye-off:before {content:'\e824';} /* '' */ -.icon-pin:before {content:'\e825';} /* '' */ -.icon-lock-open:before {content:'\e826';} /* '' */ -.icon-lock:before {content:'\e827';} /* '' */ -.icon-attach:before {content:'\e828';} /* '' */ -.icon-home:before {content:'\e829';} /* '' */ -.icon-info-circled:before {content:'\e82a';} /* '' */ -.icon-help-circled:before {content:'\e82b';} /* '' */ -.icon-shuffle:before {content:'\e82c';} /* '' */ -.icon-ccw:before {content:'\e82d';} /* '' */ -.icon-cw:before {content:'\e82e';} /* '' */ -.icon-play:before {content:'\e82f';} /* '' */ -.icon-play-circled2:before {content:'\e830';} /* '' */ -.icon-down-big:before {content:'\e831';} /* '' */ -.icon-left-big:before {content:'\e832';} /* '' */ -.icon-right-big:before {content:'\e833';} /* '' */ -.icon-up-big:before {content:'\e834';} /* '' */ -.icon-up-open:before {content:'\e835';} /* '' */ -.icon-right-open:before {content:'\e836';} /* '' */ -.icon-left-open:before {content:'\e837';} /* '' */ -.icon-down-open:before {content:'\e838';} /* '' */ -.icon-cloud:before {content:'\e839';} /* '' */ -.icon-text-width:before {content:'\e83a';} /* '' */ -.icon-italic:before {content:'\e83b';} /* '' */ -.icon-bold:before {content:'\e83c';} /* '' */ -.icon-retweet:before {content:'\e83d';} /* '' */ -.icon-user:before {content:'\e83e';} /* '' */ -.icon-users:before {content:'\e83f';} /* '' */ -.icon-flag:before {content:'\e840';} /* '' */ -.icon-heart:before {content:'\e841';} /* '' */ -.icon-heart-empty:before {content:'\e842';} /* '' */ -.icon-edit:before {content:'\e843';} /* '' */ -.icon-export:before {content:'\e844';} /* '' */ -.icon-cog:before {content:'\e845';} /* '' */ -.icon-cog-alt:before {content:'\e846';} /* '' */ -.icon-wrench:before {content:'\e847';} /* '' */ -.icon-resize-vertical:before {content:'\e848';} /* '' */ -.icon-resize-small:before {content:'\e849';} /* '' */ -.icon-resize-full:before {content:'\e84a';} /* '' */ -.icon-resize-horizontal:before {content:'\e84b';} /* '' */ -.icon-target:before {content:'\e84c';} /* '' */ -.icon-signal:before {content:'\e84d';} /* '' */ -.icon-umbrella:before {content:'\e84e';} /* '' */ -.icon-leaf:before {content:'\e84f';} /* '' */ -.icon-book:before {content:'\e850';} /* '' */ -.icon-asterisk:before {content:'\e851';} /* '' */ -.icon-chart-bar:before {content:'\e852';} /* '' */ -.icon-key:before {content:'\e853';} /* '' */ -.icon-hammer:before {content:'\e854';} /* '' */ -.icon-star-half:before {content:'\e855';} /* '' */ -.icon-move:before {content:'\f047';} /* '' */ -.icon-expand-1:before {content:'\f065';} /* '' */ -.icon-link-ext:before {content:'\f08e';} /* '' */ -.icon-check-empty:before {content:'\f096';} /* '' */ -.icon-resize-full-alt:before {content:'\f0b2';} /* '' */ -.icon-flask:before {content:'\f0c3';} /* '' */ -.icon-docs:before {content:'\f0c5';} /* '' */ -.icon-list-bullet:before {content:'\f0ca';} /* '' */ -.icon-mail-alt:before {content:'\f0e0';} /* '' */ -.icon-sitemap:before {content:'\f0e8';} /* '' */ -.icon-exchange:before {content:'\f0ec';} /* '' */ -.icon-download-cloud:before {content:'\f0ed';} /* '' */ -.icon-upload-cloud:before {content:'\f0ee';} /* '' */ -.icon-plus-squared:before {content:'\f0fe';} /* '' */ -.icon-circle-empty:before {content:'\f10c';} /* '' */ -.icon-folder-empty:before {content:'\f114';} /* '' */ -.icon-folder-open-empty:before {content:'\f115';} /* '' */ -.icon-flag-empty:before {content:'\f11d';} /* '' */ -.icon-star-half-alt:before {content:'\f123';} /* '' */ -.icon-fork:before {content:'\f126';} /* '' */ -.icon-unlink:before {content:'\f127';} /* '' */ -.icon-help:before {content:'\f128';} /* '' */ -.icon-info:before {content:'\f129';} /* '' */ -.icon-eraser:before {content:'\f12d';} /* '' */ -.icon-rocket:before {content:'\f135';} /* '' */ -.icon-anchor:before {content:'\f13d';} /* '' */ -.icon-lock-open-alt:before {content:'\f13e';} /* '' */ -.icon-play-circled:before {content:'\f144';} /* '' */ -.icon-minus-squared:before {content:'\f146';} /* '' */ -.icon-minus-squared-alt:before {content:'\f147';} /* '' */ -.icon-level-up:before {content:'\f148';} /* '' */ -.icon-level-down:before {content:'\f149';} /* '' */ -.icon-ok-squared:before {content:'\f14a';} /* '' */ -.icon-pencil-squared:before {content:'\f14b';} /* '' */ -.icon-compass:before {content:'\f14e';} /* '' */ -.icon-expand:before {content:'\f150';} /* '' */ -.icon-collapse:before {content:'\f151';} /* '' */ -.icon-expand-right:before {content:'\f152';} /* '' */ -.icon-sort-alt-up:before {content:'\f160';} /* '' */ -.icon-sort-alt-down:before {content:'\f161';} /* '' */ -.icon-female:before {content:'\f182';} /* '' */ -.icon-male:before {content:'\f183';} /* '' */ -.icon-sun:before {content:'\f185';} /* '' */ -.icon-box:before {content:'\f187';} /* '' */ -.icon-bug:before {content:'\f188';} /* '' */ -.icon-right-circled2:before {content:'\f18e';} /* '' */ -.icon-left-circled2:before {content:'\f190';} /* '' */ -.icon-collapse-left:before {content:'\f191';} /* '' */ -.icon-dot-circled:before {content:'\f192';} /* '' */ -.icon-plus-squared-alt:before {content:'\f196';} /* '' */ -.icon-bank:before {content:'\f19c';} /* '' */ -.icon-child:before {content:'\f1ae';} /* '' */ -.icon-paw:before {content:'\f1b0';} /* '' */ -.icon-tree:before {content:'\f1bb';} /* '' */ -.icon-history:before {content:'\f1da';} /* '' */ -.icon-header:before {content:'\f1dc';} /* '' */ -.icon-sliders:before {content:'\f1de';} /* '' */ -.icon-trash:before {content:'\f1f8';} /* '' */ -.icon-brush:before {content:'\f1fc';} /* '' */ -.icon-chart-area:before {content:'\f1fe';} /* '' */ -.icon-chart-pie:before {content:'\f200';} /* '' */ -.icon-chart-line:before {content:'\f201';} /* '' */ -.icon-ship:before {content:'\f21a';} /* '' */ -.icon-user-secret:before {content:'\f21b';} /* '' */ -.icon-venus:before {content:'\f221';} /* '' */ -.icon-mars:before {content:'\f222';} /* '' */ -.icon-venus-mars:before {content:'\f228';} /* '' */ -.icon-neuter:before {content:'\f22c';} /* '' */ -.icon-user-plus:before {content:'\f234';} /* '' */ -.icon-user-times:before {content:'\f235';} /* '' */ -.icon-object-ungroup:before {content:'\f248';} /* '' */ -.icon-clone:before {content:'\f24d';} /* '' */ -.icon-balance-scale:before {content:'\f24e';} /* '' */ -.icon-hourglass-1:before {content:'\f251';} /* '' */ -.icon-hand-grab-o:before {content:'\f255';} /* '' */ -.icon-hand-paper-o:before {content:'\f256';} /* '' */ -.icon-wikipedia-w:before {content:'\f266';} /* '' */ -.icon-calendar-check-o:before {content:'\f274';} /* '' */ -.icon-map-pin:before {content:'\f276';} /* '' */ -.icon-map-signs:before {content:'\f277';} /* '' */ -.icon-map-o:before {content:'\f278';} /* '' */ -.icon-map:before {content:'\f279';} /* '' */ -.icon-fort-awesome:before {content:'\f286';} /* '' */ -.icon-percent:before {content:'\f295';} /* '' */ -.icon-shield-alt:before {content:'\f3ed';} /* '' */ -.icon-chess-bishop:before {content:'\f43a';} /* '' */ -.icon-chess-king:before {content:'\f43f';} /* '' */ -.icon-chess-knight:before {content:'\f441';} /* '' */ -.icon-chess-pawn:before {content:'\f443';} /* '' */ -.icon-chess-queen:before {content:'\f445';} /* '' */ -.icon-chess-rook:before {content:'\f447';} /* '' */ -.icon-sign:before {content:'\f4d9';} /* '' */ -.icon-user-friends:before {content:'\f500';} /* '' */ -.icon-user-shield:before {content:'\f505';} /* '' */ -.icon-crow:before {content:'\f520';} /* '' */ -.icon-crown:before {content:'\f521';} /* '' */ -.icon-ruler:before {content:'\f545';} /* '' */ -.icon-store:before {content:'\f54e';} /* '' */ -.icon-bezier-curve:before {content:'\f55b';} /* '' */ -.icon-drafting-compass:before {content:'\f568';} /* '' */ -.icon-globe-africa:before {content:'\f57c';} /* '' */ -.icon-monument:before {content:'\f5a6';} /* '' */ -.icon-mortar-pestle:before {content:'\f5a7';} /* '' */ -.icon-paint-roller:before {content:'\f5aa';} /* '' */ -.icon-pen-fancy:before {content:'\f5ac';} /* '' */ -.icon-pen-nib:before {content:'\f5ad';} /* '' */ -.icon-pencil-ruler:before {content:'\f5ae';} /* '' */ -.icon-draw-polygon:before {content:'\f5ee';} /* '' */ -.icon-layer-group:before {content:'\f5fd';} /* '' */ -.icon-menorah:before {content:'\f676';} /* '' */ -.icon-mosque:before {content:'\f678';} /* '' */ -.icon-place-of-worship:before {content:'\f67f';} /* '' */ -.icon-synagogue:before {content:'\f69b';} /* '' */ -.icon-book-dead:before {content:'\f6b7';} /* '' */ -.icon-campground:before {content:'\f6bb';} /* '' */ -.icon-mountain:before {content:'\f6fc';} /* '' */ -.icon-network-wired:before {content:'\f6ff';} /* '' */ -.icon-temperature-high:before {content:'\f769';} /* '' */ -.icon-temperature-low:before {content:'\f76b';} /* '' */ +.icon-pencil:before { content: '\e800'; } /* '' */ +.icon-font:before { content: '\e801'; } /* '' */ +.icon-arrows-cw:before { content: '\e802'; } /* '' */ +.icon-doc:before { content: '\e803'; } /* '' */ +.icon-trash-empty:before { content: '\e804'; } /* '' */ +.icon-ok:before { content: '\e805'; } /* '' */ +.icon-ok-circled:before { content: '\e806'; } /* '' */ +.icon-ok-circled2:before { content: '\e807'; } /* '' */ +.icon-link:before { content: '\e808'; } /* '' */ +.icon-globe:before { content: '\e809'; } /* '' */ +.icon-plus:before { content: '\e80a'; } /* '' */ +.icon-plus-circled:before { content: '\e80b'; } /* '' */ +.icon-minus-circled:before { content: '\e80c'; } /* '' */ +.icon-minus:before { content: '\e80d'; } /* '' */ +.icon-text-height:before { content: '\e80e'; } /* '' */ +.icon-adjust:before { content: '\e80f'; } /* '' */ +.icon-tag:before { content: '\e810'; } /* '' */ +.icon-tags:before { content: '\e811'; } /* '' */ +.icon-logout:before { content: '\e812'; } /* '' */ +.icon-download:before { content: '\e813'; } /* '' */ +.icon-down-circled2:before { content: '\e814'; } /* '' */ +.icon-upload:before { content: '\e815'; } /* '' */ +.icon-up-circled2:before { content: '\e816'; } /* '' */ +.icon-cancel-circled2:before { content: '\e817'; } /* '' */ +.icon-cancel-circled:before { content: '\e818'; } /* '' */ +.icon-cancel:before { content: '\e819'; } /* '' */ +.icon-check:before { content: '\e81a'; } /* '' */ +.icon-align-left:before { content: '\e81b'; } /* '' */ +.icon-align-center:before { content: '\e81c'; } /* '' */ +.icon-align-right:before { content: '\e81d'; } /* '' */ +.icon-align-justify:before { content: '\e81e'; } /* '' */ +.icon-star:before { content: '\e81f'; } /* '' */ +.icon-star-empty:before { content: '\e820'; } /* '' */ +.icon-search:before { content: '\e821'; } /* '' */ +.icon-mail:before { content: '\e822'; } /* '' */ +.icon-eye:before { content: '\e823'; } /* '' */ +.icon-eye-off:before { content: '\e824'; } /* '' */ +.icon-pin:before { content: '\e825'; } /* '' */ +.icon-lock-open:before { content: '\e826'; } /* '' */ +.icon-lock:before { content: '\e827'; } /* '' */ +.icon-attach:before { content: '\e828'; } /* '' */ +.icon-home:before { content: '\e829'; } /* '' */ +.icon-info-circled:before { content: '\e82a'; } /* '' */ +.icon-help-circled:before { content: '\e82b'; } /* '' */ +.icon-shuffle:before { content: '\e82c'; } /* '' */ +.icon-ccw:before { content: '\e82d'; } /* '' */ +.icon-cw:before { content: '\e82e'; } /* '' */ +.icon-play:before { content: '\e82f'; } /* '' */ +.icon-play-circled2:before { content: '\e830'; } /* '' */ +.icon-down-big:before { content: '\e831'; } /* '' */ +.icon-left-big:before { content: '\e832'; } /* '' */ +.icon-right-big:before { content: '\e833'; } /* '' */ +.icon-up-big:before { content: '\e834'; } /* '' */ +.icon-up-open:before { content: '\e835'; } /* '' */ +.icon-right-open:before { content: '\e836'; } /* '' */ +.icon-left-open:before { content: '\e837'; } /* '' */ +.icon-down-open:before { content: '\e838'; } /* '' */ +.icon-cloud:before { content: '\e839'; } /* '' */ +.icon-text-width:before { content: '\e83a'; } /* '' */ +.icon-italic:before { content: '\e83b'; } /* '' */ +.icon-bold:before { content: '\e83c'; } /* '' */ +.icon-retweet:before { content: '\e83d'; } /* '' */ +.icon-user:before { content: '\e83e'; } /* '' */ +.icon-users:before { content: '\e83f'; } /* '' */ +.icon-flag:before { content: '\e840'; } /* '' */ +.icon-heart:before { content: '\e841'; } /* '' */ +.icon-heart-empty:before { content: '\e842'; } /* '' */ +.icon-edit:before { content: '\e843'; } /* '' */ +.icon-export:before { content: '\e844'; } /* '' */ +.icon-cog:before { content: '\e845'; } /* '' */ +.icon-cog-alt:before { content: '\e846'; } /* '' */ +.icon-wrench:before { content: '\e847'; } /* '' */ +.icon-resize-vertical:before { content: '\e848'; } /* '' */ +.icon-resize-small:before { content: '\e849'; } /* '' */ +.icon-resize-full:before { content: '\e84a'; } /* '' */ +.icon-resize-horizontal:before { content: '\e84b'; } /* '' */ +.icon-target:before { content: '\e84c'; } /* '' */ +.icon-signal:before { content: '\e84d'; } /* '' */ +.icon-umbrella:before { content: '\e84e'; } /* '' */ +.icon-leaf:before { content: '\e84f'; } /* '' */ +.icon-book:before { content: '\e850'; } /* '' */ +.icon-asterisk:before { content: '\e851'; } /* '' */ +.icon-chart-bar:before { content: '\e852'; } /* '' */ +.icon-key:before { content: '\e853'; } /* '' */ +.icon-hammer:before { content: '\e854'; } /* '' */ +.icon-town-hall:before { content: '\e855'; } /* '' */ +.icon-move:before { content: '\f047'; } /* '' */ +.icon-link-ext:before { content: '\f08e'; } /* '' */ +.icon-check-empty:before { content: '\f096'; } /* '' */ +.icon-resize-full-alt:before { content: '\f0b2'; } /* '' */ +.icon-docs:before { content: '\f0c5'; } /* '' */ +.icon-list-bullet:before { content: '\f0ca'; } /* '' */ +.icon-mail-alt:before { content: '\f0e0'; } /* '' */ +.icon-sitemap:before { content: '\f0e8'; } /* '' */ +.icon-exchange:before { content: '\f0ec'; } /* '' */ +.icon-download-cloud:before { content: '\f0ed'; } /* '' */ +.icon-upload-cloud:before { content: '\f0ee'; } /* '' */ +.icon-plus-squared:before { content: '\f0fe'; } /* '' */ +.icon-circle-empty:before { content: '\f10c'; } /* '' */ +.icon-folder-empty:before { content: '\f114'; } /* '' */ +.icon-folder-open-empty:before { content: '\f115'; } /* '' */ +.icon-flag-empty:before { content: '\f11d'; } /* '' */ +.icon-star-half-alt:before { content: '\f123'; } /* '' */ +.icon-fork:before { content: '\f126'; } /* '' */ +.icon-unlink:before { content: '\f127'; } /* '' */ +.icon-help:before { content: '\f128'; } /* '' */ +.icon-info:before { content: '\f129'; } /* '' */ +.icon-eraser:before { content: '\f12d'; } /* '' */ +.icon-rocket:before { content: '\f135'; } /* '' */ +.icon-anchor:before { content: '\f13d'; } /* '' */ +.icon-lock-open-alt:before { content: '\f13e'; } /* '' */ +.icon-play-circled:before { content: '\f144'; } /* '' */ +.icon-minus-squared:before { content: '\f146'; } /* '' */ +.icon-minus-squared-alt:before { content: '\f147'; } /* '' */ +.icon-level-up:before { content: '\f148'; } /* '' */ +.icon-level-down:before { content: '\f149'; } /* '' */ +.icon-ok-squared:before { content: '\f14a'; } /* '' */ +.icon-pencil-squared:before { content: '\f14b'; } /* '' */ +.icon-expand:before { content: '\f150'; } /* '' */ +.icon-collapse:before { content: '\f151'; } /* '' */ +.icon-expand-right:before { content: '\f152'; } /* '' */ +.icon-sort-alt-up:before { content: '\f160'; } /* '' */ +.icon-sort-alt-down:before { content: '\f161'; } /* '' */ +.icon-female:before { content: '\f182'; } /* '' */ +.icon-male:before { content: '\f183'; } /* '' */ +.icon-sun:before { content: '\f185'; } /* '' */ +.icon-box:before { content: '\f187'; } /* '' */ +.icon-bug:before { content: '\f188'; } /* '' */ +.icon-right-circled2:before { content: '\f18e'; } /* '' */ +.icon-left-circled2:before { content: '\f190'; } /* '' */ +.icon-collapse-left:before { content: '\f191'; } /* '' */ +.icon-dot-circled:before { content: '\f192'; } /* '' */ +.icon-plus-squared-alt:before { content: '\f196'; } /* '' */ +.icon-bank:before { content: '\f19c'; } /* '' */ +.icon-child:before { content: '\f1ae'; } /* '' */ +.icon-tree:before { content: '\f1bb'; } /* '' */ +.icon-history:before { content: '\f1da'; } /* '' */ +.icon-header:before { content: '\f1dc'; } /* '' */ +.icon-sliders:before { content: '\f1de'; } /* '' */ +.icon-trash:before { content: '\f1f8'; } /* '' */ +.icon-brush:before { content: '\f1fc'; } /* '' */ +.icon-chart-area:before { content: '\f1fe'; } /* '' */ +.icon-chart-pie:before { content: '\f200'; } /* '' */ +.icon-chart-line:before { content: '\f201'; } /* '' */ +.icon-user-secret:before { content: '\f21b'; } /* '' */ +.icon-venus:before { content: '\f221'; } /* '' */ +.icon-mars:before { content: '\f222'; } /* '' */ +.icon-venus-mars:before { content: '\f228'; } /* '' */ +.icon-neuter:before { content: '\f22c'; } /* '' */ +.icon-user-plus:before { content: '\f234'; } /* '' */ +.icon-user-times:before { content: '\f235'; } /* '' */ +.icon-object-ungroup:before { content: '\f248'; } /* '' */ +.icon-clone:before { content: '\f24d'; } /* '' */ +.icon-hourglass-1:before { content: '\f251'; } /* '' */ +.icon-hand-grab-o:before { content: '\f255'; } /* '' */ +.icon-hand-paper-o:before { content: '\f256'; } /* '' */ +.icon-calendar-check-o:before { content: '\f274'; } /* '' */ +.icon-map-pin:before { content: '\f276'; } /* '' */ +.icon-map-signs:before { content: '\f277'; } /* '' */ +.icon-map-o:before { content: '\f278'; } /* '' */ +.icon-map:before { content: '\f279'; } /* '' */ +.icon-fort-awesome:before { content: '\f286'; } /* '' */ +.icon-percent:before { content: '\f295'; } /* '' */ /* Amended FA icons */ -.icon-sort-name-up:after {font-size:.9em;content:'\f15d';} -.icon-sort-name-down:after {font-size:.9em;content:'\f15e';} -.icon-sort-number-up:after {font-size:.9em;content:'\f162';} -.icon-sort-number-down:after {font-size:.9em;content:'\f163';} +.icon-sort-name-up:after { font-size: 9px; content: '\f15d'; } +.icon-sort-name-down:after { font-size: 9px; content: '\f15e'; } +.icon-sort-number-up:after { font-size: 9px; content: '\f162'; } +.icon-sort-number-down:after { font-size: 9px; content: '\f163'; } /* Custom icons */ -.icon-w:before {font-style:italic;content:'w:';} -.icon-f:before {font-style:italic;content:'f:';} -.icon-n:before {font-style:italic;content:'n:';} -.icon-i:before {font-style:italic;content:'i:';} -.icon-s:before {font-style:italic;content:'s:';} -.icon-r:before {font-style:italic;content:'r:';} -.icon-a:before {font-style:italic;content:'a:';} -.icon-smooth:before {font-weight: bold;content:'∼';} -.icon-disrupt:before {font-weight: bold;content:'⥄';} -.icon-if:before {font-style: italic; font-weight: bold;content:'if';} -.icon-coa:before {content:'\f3ed'; font-size: .9em; color: #999;} /* '' */ -.icon-half:before {font-weight: bold;content:'½';} -.icon-voice:before {content:'🔊';} -.icon-robot:before {content:'🤖';} -.icon-die:before {content:'🎲';} -.icon-button-die:before {content:'🎲'; padding-right: .4em;} -.icon-button-power:before {content:'💪'; padding-right: .6em;} - -.icon-button-melee:before {content:'⚔️'; padding-right: .4em;} -.icon-button-skirmish:before {content:'🎯'; padding-right: .4em;} -.icon-button-pursue:before {content:'🐎'; padding-right: .4em;} -.icon-button-retreat:before {content:'🏳️'; padding-right: .4em;} -.icon-button-shelling:before {content:'💣'; padding-right: .4em;} -.icon-button-boarding:before {content:'⚔️'; padding-right: .4em;} -.icon-button-chase:before {content:'⛵'; padding-right: .4em;} -.icon-button-withdrawal:before {content:'🏳️'; padding-right: .4em;} -.icon-button-bombardment:before {content:'💣'; padding-right: .4em;} -.icon-button-blockade:before {content:'⏳'; padding-right: .4em;} -.icon-button-sheltering:before {content:'🔒'; padding-right: .4em;} -.icon-button-sortie:before {content:'🚪'; padding-right: .4em;} -.icon-button-defense:before {content:'🛡️'; padding-right: .4em;} -.icon-button-storming:before {content:'⚔️'; padding-right: .4em;} -.icon-button-looting:before {content:'☠️'; padding-right: .4em;} -.icon-button-surrendering:before {content:'🏳️'; padding-right: .4em;} -.icon-button-surprise:before {content:'⚡'; padding-right: .4em;} -.icon-button-shock:before {content:'💫'; padding-right: .4em;} -.icon-button-flee:before {content:'⛵'; padding-right: .4em;} -.icon-button-waiting:before {content:'⌛'; padding-right: .4em;} -.icon-button-maneuvering:before {content:'💢'; padding-right: .4em;} -.icon-button-dogfight:before {content:'🐕'; padding-right: .4em;} - -.icon-button-field:before {content:'🗡️'; padding-right: .4em;} -.icon-button-naval:before {content:'🌊'; padding-right: .4em;} -.icon-button-siege:before {content:'🏰'; padding-right: .4em;} -.icon-button-ambush:before {content:'🌳'; padding-right: .4em;} -.icon-button-landing:before {content:'⚓'; padding-right: .4em;} -.icon-button-air:before {content:'💨'; padding-right: .4em;} -.icon-button-screenshot:before {content:'🖥️'; padding-right: .4em;} +.icon-w:before { font-style: italic; content: 'w:'; } +.icon-f:before { font-style: italic; content: 'f:'; } +.icon-n:before { font-style: italic; content: 'n:'; } +.icon-i:before { font-style: italic; content: 'i:'; } +.icon-s:before { font-style: italic; content: 's:'; } +.icon-r:before { font-style: italic; content: 'r:'; } +.icon-a:before { font-style: italic; content: 'a:'; } +.icon-smooth:before {font-weight: bold; content: '∼'; } +.icon-disrupt:before {font-weight: bold; content: '෴'; } +.icon-if:before {font-style: italic; font-weight: bold; content: 'if'; } diff --git a/images/Discord.png b/images/Discord.png deleted file mode 100644 index 78dab317..00000000 Binary files a/images/Discord.png and /dev/null differ diff --git a/images/Tumblr.png b/images/Tumblr.png new file mode 100644 index 00000000..2b65ddad Binary files /dev/null and b/images/Tumblr.png differ diff --git a/images/icons/favicon-16x16.png b/images/favicon-16x16.png similarity index 100% rename from images/icons/favicon-16x16.png rename to images/favicon-16x16.png diff --git a/images/favicon-32x32.png b/images/favicon-32x32.png new file mode 100644 index 00000000..e1815ea8 Binary files /dev/null and b/images/favicon-32x32.png differ diff --git a/images/icons/favicon-32x32.png b/images/icons/favicon-32x32.png deleted file mode 100644 index 13e5179d..00000000 Binary files a/images/icons/favicon-32x32.png and /dev/null differ diff --git a/images/icons/icon_x512.png b/images/icons/icon_x512.png deleted file mode 100644 index f1f8c9aa..00000000 Binary files a/images/icons/icon_x512.png and /dev/null differ diff --git a/images/icons/maskable_icon_x128.png b/images/icons/maskable_icon_x128.png deleted file mode 100644 index fa877d1b..00000000 Binary files a/images/icons/maskable_icon_x128.png and /dev/null differ diff --git a/images/icons/maskable_icon_x192.png b/images/icons/maskable_icon_x192.png deleted file mode 100644 index 3322eab3..00000000 Binary files a/images/icons/maskable_icon_x192.png and /dev/null differ diff --git a/images/icons/maskable_icon_x384.png b/images/icons/maskable_icon_x384.png deleted file mode 100644 index c7e7e705..00000000 Binary files a/images/icons/maskable_icon_x384.png and /dev/null differ diff --git a/images/icons/maskable_icon_x512.png b/images/icons/maskable_icon_x512.png deleted file mode 100644 index 5b2361fd..00000000 Binary files a/images/icons/maskable_icon_x512.png and /dev/null differ diff --git a/images/kiwiroo.png b/images/kiwiroo.png deleted file mode 100644 index 4f34ae7e..00000000 Binary files a/images/kiwiroo.png and /dev/null differ diff --git a/images/pattern1.png b/images/pattern1.png deleted file mode 100644 index 59375796..00000000 Binary files a/images/pattern1.png and /dev/null differ diff --git a/images/pattern2.png b/images/pattern2.png deleted file mode 100644 index e96f68fa..00000000 Binary files a/images/pattern2.png and /dev/null differ diff --git a/images/pattern3.png b/images/pattern3.png deleted file mode 100644 index 636fde6f..00000000 Binary files a/images/pattern3.png and /dev/null differ diff --git a/images/pattern4.png b/images/pattern4.png deleted file mode 100644 index d96aa18a..00000000 Binary files a/images/pattern4.png and /dev/null differ diff --git a/images/pattern5.png b/images/pattern5.png deleted file mode 100644 index 82a2af7c..00000000 Binary files a/images/pattern5.png and /dev/null differ diff --git a/images/pattern6.png b/images/pattern6.png deleted file mode 100644 index dc9271ef..00000000 Binary files a/images/pattern6.png and /dev/null differ diff --git a/images/preview.png b/images/preview.png index 2b150732..aaa8459c 100644 Binary files a/images/preview.png and b/images/preview.png differ diff --git a/images/textures/antique-big.jpg b/images/textures/antique-big.jpg deleted file mode 100644 index 711b1681..00000000 Binary files a/images/textures/antique-big.jpg and /dev/null differ diff --git a/images/textures/antique-small.jpg b/images/textures/antique-small.jpg deleted file mode 100644 index 851b5d07..00000000 Binary files a/images/textures/antique-small.jpg and /dev/null differ diff --git a/images/textures/folded-paper-big.jpg b/images/textures/folded-paper-big.jpg deleted file mode 100644 index c2c4d761..00000000 Binary files a/images/textures/folded-paper-big.jpg and /dev/null differ diff --git a/images/textures/folded-paper-small.jpg b/images/textures/folded-paper-small.jpg deleted file mode 100644 index 88418a13..00000000 Binary files a/images/textures/folded-paper-small.jpg and /dev/null differ diff --git a/images/textures/gray-paper.jpg b/images/textures/gray-paper.jpg deleted file mode 100644 index 238d6e4c..00000000 Binary files a/images/textures/gray-paper.jpg and /dev/null differ diff --git a/images/textures/iran-small.jpg b/images/textures/iran-small.jpg deleted file mode 100644 index 39f34512..00000000 Binary files a/images/textures/iran-small.jpg and /dev/null differ diff --git a/images/textures/marble-big.jpg b/images/textures/marble-big.jpg deleted file mode 100644 index c1d2a6d4..00000000 Binary files a/images/textures/marble-big.jpg and /dev/null differ diff --git a/images/textures/marble-blue-big.jpg b/images/textures/marble-blue-big.jpg deleted file mode 100644 index dbfc0975..00000000 Binary files a/images/textures/marble-blue-big.jpg and /dev/null differ diff --git a/images/textures/marble-blue-small.jpg b/images/textures/marble-blue-small.jpg deleted file mode 100644 index 2e95fdcb..00000000 Binary files a/images/textures/marble-blue-small.jpg and /dev/null differ diff --git a/images/textures/marble-small.jpg b/images/textures/marble-small.jpg deleted file mode 100644 index 10d1a9ab..00000000 Binary files a/images/textures/marble-small.jpg and /dev/null differ diff --git a/images/textures/mars-big.jpg b/images/textures/mars-big.jpg deleted file mode 100644 index 3fd39dae..00000000 Binary files a/images/textures/mars-big.jpg and /dev/null differ diff --git a/images/textures/mars-small.jpg b/images/textures/mars-small.jpg deleted file mode 100644 index 75de8dd3..00000000 Binary files a/images/textures/mars-small.jpg and /dev/null differ diff --git a/images/textures/mauritania-small.jpg b/images/textures/mauritania-small.jpg deleted file mode 100644 index 22d9cecf..00000000 Binary files a/images/textures/mauritania-small.jpg and /dev/null differ diff --git a/images/textures/mercury-big.jpg b/images/textures/mercury-big.jpg deleted file mode 100644 index 7e06f0ee..00000000 Binary files a/images/textures/mercury-big.jpg and /dev/null differ diff --git a/images/textures/mercury-small.jpg b/images/textures/mercury-small.jpg deleted file mode 100644 index 53f31ee3..00000000 Binary files a/images/textures/mercury-small.jpg and /dev/null differ diff --git a/images/textures/ocean.jpg b/images/textures/ocean.jpg deleted file mode 100644 index 981366ca..00000000 Binary files a/images/textures/ocean.jpg and /dev/null differ diff --git a/images/textures/pergamena-small.jpg b/images/textures/pergamena-small.jpg deleted file mode 100644 index 951f9eda..00000000 Binary files a/images/textures/pergamena-small.jpg and /dev/null differ diff --git a/images/textures/plaster.jpg b/images/textures/plaster.jpg deleted file mode 100644 index 8ec85c81..00000000 Binary files a/images/textures/plaster.jpg and /dev/null differ diff --git a/images/textures/soiled-paper-vertical.png b/images/textures/soiled-paper-vertical.png deleted file mode 100644 index f8bb720e..00000000 Binary files a/images/textures/soiled-paper-vertical.png and /dev/null differ diff --git a/images/textures/soiled-paper.jpg b/images/textures/soiled-paper.jpg deleted file mode 100644 index 00333992..00000000 Binary files a/images/textures/soiled-paper.jpg and /dev/null differ diff --git a/images/textures/spain-small.jpg b/images/textures/spain-small.jpg deleted file mode 100644 index a413f508..00000000 Binary files a/images/textures/spain-small.jpg and /dev/null differ diff --git a/images/textures/timbercut-big.jpg b/images/textures/timbercut-big.jpg deleted file mode 100644 index 7dc9b656..00000000 Binary files a/images/textures/timbercut-big.jpg and /dev/null differ diff --git a/images/textures/timbercut-small.jpg b/images/textures/timbercut-small.jpg deleted file mode 100644 index a73e47be..00000000 Binary files a/images/textures/timbercut-small.jpg and /dev/null differ diff --git a/index.css b/index.css index 373bf63c..6404fb9e 100644 --- a/index.css +++ b/index.css @@ -1,2423 +1,1349 @@ -:root { - --monospace: Consolas, monospace; - --serif: Georgia, serif; - --sans-serif: Helvetica, Arial, sans-serif; +@font-face { + font-family: 'Almendra SC'; + font-style: normal; + font-weight: 400; + src: local('Almendra SC Regular'), local('AlmendraSC-Regular'), url(https://fonts.gstatic.com/s/almendrasc/v8/Iure6Yx284eebowr7hbyTaZOrLQ.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } -/* hide Google translate header */ -body > .skiptranslate { - display: none; +@media print { + div, canvas { + display: none; + } } -/* hide Google translate in-progress widget */ -body > .skiptranslate + div { - display: none; +body { + margin: 0; + border: 0; } -/* make translated text wrapper non-blocking */ -font { - pointer-events: none; +svg { + position: absolute; + background-color: #53679f; } -input, -select, -button { - font-size: 1em; +canvas { + position: absolute; + pointer-events: none; } -input, -select, -textarea { - border: 0.5px solid #dbdfe6; - border-radius: 0.5px; - box-sizing: border-box; +input, button, select, a { + outline: none; } -select { - height: 1.6em; - border-top-color: #abadb3; - padding: 0; - text-indent: 0px; -} - -input { - border-top-color: #abadb3; - padding: 2px; - text-indent: 1px; -} - -input:read-only { - cursor: default; -} - -input[type="radio"] { - vertical-align: bottom; - cursor: pointer; -} - -textarea { - padding: 3px; - box-sizing: border-box; - width: 100%; -} - -iframe { - border: 0; - width: 100%; -} - -#map { - background-color: #000000; - mask-mode: alpha; - mask-clip: no-clip; - fill-rule: evenodd; - user-select: none; -} - -#canvas { - position: absolute; - pointer-events: none; -} - -#preview { - position: absolute; - bottom: 1em; - left: 1em; - cursor: pointer; -} - -#pickerContainer { - position: absolute; - z-index: 100; -} - -input, -button, -select, -a, -textarea { - outline: none; -} - -button, -select, -a { - cursor: pointer; +button, select, a { + cursor: pointer; } .pointer { - cursor: pointer !important; + cursor: pointer; } -#prec text { - font-size: 32px; - stroke: none; - text-shadow: 1px 1px 1px #9daac9; - user-select: none; +#terrs { + stroke-width: 0.7; + stroke-linejoin: round; + mask: url(#shape); + mask-mode: alpha; } -#population, -#cells, -#compass { - fill: none; +#cults { + stroke-width: 0.7; + mask: url(#shape); + mask-mode: alpha; + pointer-events: none; +} + +#grid { + display: none; + fill: none; } #landmass { - mask: url(#land); - fill-rule: evenodd; + fill-rule: evenodd; + stroke: none; } #lakes, -#coastline, -#armies, -#ice, -#emblems { - cursor: pointer; -} - -#temperature { - font-family: var(--sans-serif); - font-weight: 700; - text-anchor: middle; - dominant-baseline: central; - text-shadow: 0px 0px 10px white; - fill-rule: evenodd; -} - -#oceanLayers, -#terrs { - fill-rule: evenodd; +#oceanLayers { + fill-rule: evenodd; } #coastline { - fill: none; - stroke-linejoin: round; + fill: none; + stroke-linejoin: round; } -t, -#regions, -#cults, -#relig, -#biomes, -#provincesBody, -#terrs, -#tooltip, -#temperature, -#texture, -#landmass, -#vignette, -#gridOverlay, -#fogging { - pointer-events: none; -} - -#armies text { - pointer-events: none; - user-select: none; - stroke: none; - fill: #fff; - text-shadow: 0 0 4px #000; - dominant-baseline: central; - text-anchor: middle; - font-family: var(--sans-serif); - fill-opacity: 1; -} - -#armies text.regimentIcon { - font-size: 0.8em; -} - -#statesHalo { - fill: none; - stroke-linecap: round; - stroke-linejoin: round; -} - -#statesBody, -#provincesBody, -#relig, -#biomes, -#cults { - stroke-linejoin: round; - fill-rule: evenodd; -} - -#statesBody, -#provincesBody, -#relig, -#cults { - mask: url(#land); -} - -#borders { - stroke-linejoin: round; - fill: none; +#regions { + stroke-width: 0; + fill-rule: evenodd; + stroke-linejoin: round; + mask: url(#shape); + mask-mode: alpha; + pointer-events: none; } #rivers { - stroke: none; - mask: url(#land); - cursor: pointer; - fill-rule: nonzero; + stroke: none; + mask: url(#shape); + cursor: pointer; } -#anchors { - pointer-events: none; +#icons { + cursor: pointer; } -#terrain, -#burgIcons { +#terrain { + mask: url(#shape); + mask-mode: alpha; cursor: pointer; } +#hills { + stroke-width: 0.1px; + fill: #999999; +} + +#mounts { + stroke-width: 0.1px; + fill: white; +} + .strokes { - stroke-width: 0.08px; - width: 2px; - stroke: #5c5c70; - stroke-dasharray: 0.5, 0.7; - stroke-linecap: round; + stroke-width: 0.08px; + width: 2px; + stroke: #5c5c70; + stroke-dasharray: 0.5, 0.7; + stroke-linecap: round; +} + +#borders { + fill: none; } #routes { - fill: none; - cursor: pointer; + fill: none; + cursor: pointer; } -i.icon-lock { - cursor: pointer; +#roads, #trails { + mask: url(#shape); + mask-mode: alpha; } -#labelEditor div { - display: inline-block; +#swamps { + stroke-width: 0.05px; + fill: none; + stroke: #5c5c70; } -#labels { - text-anchor: middle; - dominant-baseline: central; - cursor: pointer; +#forests { + stroke-width: 0.1px; + stroke: #5c5c70; } -.chartInfo { - text-align: center; - font-family: var(--sans-serif); - font-style: italic; - font-size: 12px; -} - -#statesTree text, -#provincesTree text { - pointer-events: none; - user-select: none; - stroke: none; - font-size: 11px; -} - -#statesTree circle { - filter: url(#dropShadow05); - stroke: #666666; - stroke-width: 1; -} - -#statesTree circle.selected, -#provincesTree .selected { - stroke: #c13119; - stroke-width: 2; -} - -.regimentDragLine { - marker-end: url(#end-arrow); - stroke: #333333; - stroke-dasharray: 5; - stroke-dashoffset: 1000; - animation: dash 80s linear backwards; -} - -.arrow { - marker-end: url(#end-arrow-small); - stroke: #555; - stroke-width: 0.5; -} - -@keyframes dash { - to { - stroke-dashoffset: 0; - } -} - -#provinceLabels, -#burgLabels { - dominant-baseline: alphabetic; - text-anchor: middle; -} - -#routeLength, -#coastlineArea { - background-color: #eeeeee; - border: 1px solid #a5a5a5; - line-height: 1.3em; - cursor: default; -} - -#brushCircle { - stroke: #373737; - stroke-width: 1.5px; - stroke-dasharray: 7; - stroke-linecap: butt; - fill: none; -} - -text.drag { - text-shadow: 0 0 1px red; -} - -#dialogs { - background-color: var(--bg-dialogs); -} - -.draggable { - cursor: move; -} - -.ui-widget-header { - border-bottom: 1px solid var(--dark-solid); - background: var(--header); - color: #ffffff; - font-weight: bold; -} - -button.ui-button:disabled { - filter: brightness(0.95); -} - -button.ui-button:disabled:hover { - cursor: default; -} - -.ui-dialog, -#optionsContainer { - user-select: none; -} - -#optionsTrigger { - padding: 0.6em 0.45em; -} - -@media (max-width: 600px) { - #optionsTrigger { - font-size: 2em; - padding: 0; - width: 1.3em; - height: 1.6em; - border: solid 1px #5e4fa2; - } -} - -#options { - position: absolute; - font-family: var(--monospace); - border: solid 1px #5e4fa2; - margin: 10px; - padding-bottom: 0.3em; - background: var(--bg-light); -} - -#options input, -#options select, -#options button { - font-family: var(--monospace); -} - -#collapsible { - margin: 11px; - border: 0; - position: absolute; - z-index: 2; - display: grid; - grid-template-columns: 2fr 7fr; -} - -.tab { - border-bottom: 1px solid var(--dark-solid); - height: 2.2em; - display: flex; - justify-content: space-between; -} - -div.tab > button#optionsHide { - width: auto; - font-family: var(--sans-serif); - padding: 0.6em 0.45em; -} - -button.options { - width: 100%; - background-color: var(--bg-main); - font-weight: bold; - border: none; - transition: 0.2s; -} - -button.active { - background-color: var(--header); - color: white; -} - -button.options:hover { - background-color: var(--header-active); - color: white; -} - -#options p { - font-style: italic; - font-weight: bold; - margin: 0.8em 0 0 0; -} - -#options .tip { - color: #444; - font-size: 0.9em; - font-family: sans-serif; - font-style: italic; - margin-left: 0.5em; -} - -#aboutContent { - text-align: justify; -} - -#aboutContent p { - font-weight: normal; - font-style: normal; -} - -#aboutContent a { - color: #1d1b1c; - font-weight: bold; - text-decoration: underline; -} - -#optionsContent span { - font-size: 0.9em; +#options .pressed { + background-color: #916e7f; + font-style: italic; } #options i { - color: #31272c; - font-size: 0.85em; - cursor: pointer; + cursor: pointer; + color: #382830; + font-size: 9px; } -#options button i.icon-cog { - position: absolute; - padding: 0.1em 0.3em; - background-color: var(--bg-lighter); - border-radius: 50%; - visibility: hidden; - opacity: 0; - transition: 0.4s ease-in-out; +.editTrigger { + display: none; + position: relative; + width: 60px; } -#options button i.icon-cog:hover { - color: #111; - background-color: var(--bg-light); - transform: rotateZ(180deg); +.editTrigger[type="number"] { + width: 44px; + height: 14px; } -#options button i.icon-cog:active { - transform: translateY(1px); +.editTrigger[type="range"] { + width: 132px; + cursor: pointer; } -#options button:hover i.icon-cog { - visibility: visible; - opacity: 1; +#editGroupSelect { + width: 146px; } -input[type="color"] { - -webkit-appearance: none; - cursor: pointer; - border: 1px solid #a9a9a9; +#editGroupInput { + display: none; + width: 161px; } -input[type="color"]::-webkit-color-swatch-wrapper { - padding: 0; +#editText { + width: 160px; } -#options input[type="color"] { - width: 4.5em; - height: 1em; - border: 0; +#editFontSelect { + width: 129px; } +#editFontInput { + width: 125px; +} + +input[type="color"].editColor { + height: 18px; + width: 46px; + padding: 0; + cursor: pointer; +} + +input[type="range"].editRange { + width: 80px; +} + +input[type="number"].editNumber { + width: 44px; +} + +#riverScale { + width: 40px; +} + +#riverAngle, #riverWidthInput, #riverIncrement { + width: 70px; +} + +.editButtonS { + display: none; + cursor: pointer; +} + +.editValue { + display: none; + cursor: default; + font-size: small; + width: 34px; +} + +#riverEditor>*, +#routeEditor>*, +#iconEditor>*, +#reliefEditor>*, +#burgEditor * { + display: inline-block; +} + +#labels { + text-anchor: middle; + dominant-baseline: alphabetic; + text-shadow: 0 0 4px white; + cursor: pointer; +} + +#countries { + dominant-baseline: central; +} + +#routeLength { + background-color: #f3f3f3; + border: 1px solid #a5a5a5; + padding: 3px; + font-size: 11px; + cursor: default; +} + +.tag { + fill: #fffa90; + stroke: #333333; + stroke-width: 1.4px; +} + +.line { + stroke: #666666; + stroke-width: 1px; +} + +.circle { + stroke-width: 1px; + fill: none; +} + +circle.drag { + stroke: #9f3237; +} + +text.drag { + text-shadow: 0 0 1px red; +} + +.draggable { + cursor: move; +} + +.ui-dialog, #optionsContainer { + user-select: none; +} + +#options { + margin: 10px; + display: none; + font-size: smaller; + font-family: monospace; + position: absolute; + background-color: rgba(168, 130, 147, 0.85); + border: solid 1px #5e4fa2; +} + +.tab { + overflow: hidden; + border-bottom: 1px solid #5d4651; + height: 28px; +} + +button.options { + background-color: #997c89; + font-family: monospace; + font-weight: bold; + float: left; + border: none; + padding: 8px 14px; + transition: 0.2s; + font-size: 1em; +} + +#options p { + font-style: italic; + font-weight: bold; +} + +#aboutContent { + text-align: justify; +} + +#aboutContent p { + font-style: italic; + font-weight: normal; +} + +#aboutContent a { + color: #1d1b1c; + font-weight: bold; +} + +#options input[type="color"], #convertImageDialog input[type="color"] { - width: 38px; - padding: 0; - border: 0; - background: none; - cursor: pointer; -} - -#options select { - height: 1.5em; - border: 0; - cursor: pointer; - font-size: smaller; -} - -#options input[type="text"] { - border: 0px; - width: 62%; - font-size: smaller; -} - -#options output { - text-align: right; - font-size: smaller; -} - -#options input[type="number"] { - font-size: 0.8em; - border: 0; - text-align: right; - background-color: transparent; - width: 3.3em; -} - -#options input[type="number"]::-webkit-inner-spin-button, -#options input[type="number"]::-webkit-outer-spin-button { - -webkit-appearance: none; - margin: 0; -} - -#options input[type="number"] { - appearance: textfield; - -moz-appearance: textfield; -} - -#options input[type="number"]:hover { - outline: 1px solid var(--dark-solid); -} - -#options input.paired { - text-align: center; - background-color: white; -} - -#options input.long { - width: 100%; - background-color: white; - text-align: left; + width: 38px; + padding: 0; + border: 0; + background: none; + cursor: pointer; } #options input[type="range"] { - width: 100%; - height: 8px; - background: 0; - appearance: none; - margin-left: 0; - border: 0; - padding: 0; + width: 120px; + height: 2px; + background: #ffffff; + top: -2px; + position: relative; + appearance: none; + -webkit-appearance: none; } #options input[type="range"]::-webkit-slider-thumb { - -webkit-appearance: none; - border-radius: 15%; - width: 0.91em; - height: 0.91em; - background: var(--light-solid); - border: 1px solid var(--dark-solid); - cursor: pointer; - margin-top: -0.4em; - box-shadow: 0.5px 0.5px 0px var(--dark-solid); + -webkit-appearance: none; + border-radius: 15%; + width: 10px; + height: 10px; + background: #916e7f; + border: 1px solid #5d4651; + cursor: pointer; } #options input[type="range"]::-moz-range-thumb { - -moz-appearance: none; - border-radius: 15%; - width: 0.73em; - height: 0.73em; - background: var(--light-solid); - border: 1px solid var(--dark-solid); - cursor: pointer; - box-shadow: 0.5px 0.5px 0px var(--dark-solid); -} - -#options input[type="range"]::-webkit-slider-runnable-track { - height: 2px; - background: #ffffff; -} - -#options input[type="range"]::-moz-range-track { - -moz-appearance: none; - background-color: #ffffff; - height: 2px; + -moz-appearance: none; + border-radius: 15%; + width: 10px; + height: 10px; + background: #916e7f; + border: 1px solid #5d4651; + cursor: pointer; } #options select { - width: 100%; + height: 14px; + width: 122px; + border: 0; + font-size: smaller; + font-family: monospace; + cursor: pointer; } -#loadGoogleTranslateButton { - font-size: smaller; - padding: 0.4em 0.5em; -} - -#options input[type="color"] { - width: 2em; - padding: 1px; -} - -.tabcontent button.sideButton { - border-radius: 15%; - font-size: 0.8em; - margin-block: -1em; -} - -#layersContent button.active, -#styleContent button:active { - transform: translate(0px, 1px); -} - -#styleSelectFont > option { - font-size: 2em; -} - -#sticked { - display: flex; - justify-content: space-evenly; - width: 100%; +#options .buttonoff { + background-color: #b6b4b440; + color: grey; } #sticked button { - background-color: transparent; - font-weight: bold; - border: 0; + background-color: rgba(153, 124, 137, 0); + padding: 0; + margin: 1px 17px; } -#sticked button:hover { - color: white; +#collapsible { + margin: 10px; + border: 1px solid transparent; + position: absolute; + z-index: 2; } -#exitCustomization { - right: 10px; - bottom: 10px; - position: absolute; - display: none; +#collapsible>button { + height: 28px; } -#exitCustomization > div { - width: 12em; - background: var(--dark-solid); - cursor: move; +#optionsTrigger { + width: 19px; + font-size: 9px; + padding: 0; } -#finalizeHeightmap { - width: 100%; - border: none; - padding: 0.45em 0.75em; - margin: 0.4em 0; - white-space: nowrap; - font-family: var(--monospace); - animation: glowing 2s infinite; +#regenerate { + display: none; + padding: 0px 8px; } .glow { - animation: glowing 3s infinite ease-in-out; + animation: glowing 3s infinite; } @keyframes glowing { - 0% { - box-shadow: 0 0 1px #f44336; - } - 50% { - box-shadow: 0 0 10px #f44336; - } - 100% { - box-shadow: 0 0 1px #f44336; - } + 0% { + box-shadow: 0 0 -4px #ded2d8; + } + 50% { + box-shadow: 0 0 6px #ded2d8; + } + 100% { + box-shadow: 0 0 -4px #ded2d8; + } +} + +button.options:hover { + background-color: #806070; + color: white; +} + +button.active { + background-color: #916e7f; + color: white; +} + +#layoutTab { + margin-left: 19px; } .tabcontent { - display: none; - padding: 0 12px 2px 12px; - opacity: 0.9; + display: none; + padding: 0 6px 2px 12px; + opacity: 0.8; + max-width: 290px; } .tabcontent button { - background-color: var(--bg-lighter); - border: none; - padding: 0.45em 0.75em; - margin: 0.35em 0; - transition: 0.1s; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -.tabcontent button.pressed { - background-color: var(--header); - font-style: italic; + background-color: #997c89; + font-family: monospace; + border: none; + padding: 5px 8px; + margin: 4px 0; + transition: 0.1s; + font-size: 1em; } .tabcontent button:hover { - background-color: var(--header-active); -} - -#toolsContent > .grid { - display: grid; - grid-template-columns: repeat(3, 1fr); - margin: 0.2em 0; -} - -#toolsContent button { - padding: 0.35em 0; - margin: 0.16em 0.12em; + background-color: #a8879d; } #mapLayers { - display: inline-block; - padding: 0; - margin: 0; -} - -#mapFilters > button { - width: 23%; - padding: 4px 0; -} - -#viewMode > button { - padding: 0.35em; - margin: 0.3em 0.3em 0.6em 0.3em; - float: left; - width: 30.7%; -} - -fieldset { - border: 1px solid var(--dark-solid); + display: inline-block; + padding: 0; + margin: 0; } .tabcontent li { - list-style-type: none; - background-color: var(--bg-main); - cursor: pointer; - padding: 0.35em; - margin: 0.2em 0.3em; - float: left; - width: 28%; - text-align: center; - text-transform: capitalize; - - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -.tabcontent li.buttonoff { - background-color: var(--bg-disabled); - color: #444444aa; + list-style-type: none; + background-color: #997c89; + cursor: pointer; + padding: 5px 8px; + margin: 4px; + transition: 0.1s; + float: left; } .tabcontent li:hover { - box-shadow: 0 0 2px 2px var(--dark-solid) 17; + background-color: #a8879d; } -.tabcontent button:hover { - background-color: var(--header); +.tabcontent li.solid { + color: #42383f; +} + +p { + margin-bottom: 0; } #optionsContainer span { - cursor: default; + cursor: default; } -#cellInfo { - user-select: text; +.pairedNumber { + width: 36px; + line-height: 16px; + height: 10px; + font-size: smaller; + font-family: monospace; } -#tooltip { - position: fixed; - text-align: center; - bottom: 0.5vw; - width: 70%; - left: 15%; - cursor: default; - text-shadow: 1px 1px 2px #1d0e0f; - color: #ffffff; - font-size: calc(12px + 0.5vw); - white-space: pre-line; - z-index: 99999; - background: linear-gradient(0.1turn, #ffffff00, #c71d1d66, #ffffff00); +#cellInfo>div { + margin: 5px; + display: inline-block; + vertical-align: top; } -#optionsContent table { - border-spacing: 0; - line-height: 1.2em; +#cellInfo>div:nth-child(2) { + width: 35%; } -#optionsContent table td:nth-of-type(1) { - width: 3%; -} - -#optionsContent table td:nth-of-type(2) { - width: 40%; -} - -#optionsContent table td:nth-of-type(4) { - text-align: right; - width: 6%; -} - -.emblemShapePreview { - width: 1.5em; - height: 1.5em; - margin: -0.4em 0.1em; - fill: #fff; - stroke: #000; - stroke-width: 5px; -} - -#styleContent table { - border-spacing: 0; - margin-left: 0.2em; - width: 100%; -} - -#styleContent table tr { - width: 100%; - display: table; -} - -#styleContent table td:nth-of-type(1) { - width: 34.2%; -} - -#styleElements tbody, -#styleElements caption { - display: none; -} - -#styleIsOff { - color: darkred; - font-weight: 700; - text-align: left; -} - -#styleElements .whiteButton { - padding: 0 0.8em; - border: 0; - background-color: #ffffff !important; -} - -.overflow-table { - width: 100%; - text-align: center; -} - -.matrix-table { - max-height: 80vh; - max-width: 85vw; - scrollbar-width: thin; - overflow: auto; -} - -.matrix-table > table { - text-align: center; - border-collapse: collapse; - font-size: smaller; -} - -.matrix-table > table th, -.matrix-table > table td { - border: 1px solid var(--dark-solid); - height: 2em; - padding: 0.2em; - position: relative; -} - -.matrix-table > table th { - background-color: #302a2a; - color: #ffffff; -} - -.matrix-table > table td:hover { - outline: 2px solid var(--dark-solid); - outline-offset: -1px; - z-index: 1; - cursor: pointer; -} - -.matrix-table > table td.Ally { - background-color: #73ec73; - color: #000000; -} - -.matrix-table > table td.Friendly { - background-color: #d4f8aa; -} - -.matrix-table > table td.Neutral { - background-color: #d8d9d3; -} - -.matrix-table > table td.Suspicion { - background-color: #eeafaa; -} - -.matrix-table > table td.Enemy { - background-color: #ffa39c; - color: #af0d23; -} - -.matrix-table > table td.Unknown { - background-color: #c1bfbf; -} - -.matrix-table > table td.Rival { - background-color: #bd845c; -} - -.matrix-table > table td.Vassal { - background-color: #87cefa; -} - -.matrix-table > table td.Suzerain { - background-color: #8f8fe1; -} - -.matrix-table > table td.x { - background-color: #d4ca94; - cursor: initial; -} - -#sizeOutput { - color: green; -} - -.setColors { - display: inline-block; -} - -#templateTools > button { - width: 1.8em; - height: 1.6em; - margin: 1px; - padding: 0.1em 0.5em; - float: left; - font-size: 1.2em; - font-family: var(--monospace); -} - -#brushesButtons > button { - padding: 0.3em; -} - -#brushesButtons svg { - pointer-events: none; -} - -#brushesPanel > div { +#customizeOptions { margin: 2px 0; } -#templateEditor > div { - margin: 1px 0; +#tooltip { + position: fixed; + display: none; + text-align: center; + top: calc(98vh - (10px + 0.5vw)); + width: 100%; + cursor: default; + text-shadow: 1px 1px 2px #1d0e0f; + color: #ffffff; + font-size: calc(10px + 0.5vw); + pointer-events: none; +} + +#optionsContent table td:nth-of-type(1) { + width: 8px; +} + +#optionsContent table td:nth-of-type(2) { + text-decoration: underline dotted gray; + cursor: help; + width: 126px; +} + +#optionsContent table td:nth-of-type(4) { + text-align: right; + width: 18px; +} + +.overflow-div { + height: 300px; + overflow-y: auto; + user-select: text; +} + +.overflow-table { + width: 100%; + font-size: smaller; + text-align: center; +} + +#sizeOutput { + color: green; +} + +#icons { + stroke: #0d0d0d; + fill: grey; +} + +.setColors { + display: inline-block; +} + +body button.noicon { + width: 24px; + height: 20px; + margin: 1px; + padding: 1px 6px; + float: left; + font-family: Copperplate, monospace; +} + +#brushesPanel>div, +#templateEditor>div { + margin: 2px 0; } #templateEditor #templateTools { - display: inline-block; - margin-bottom: -0.3em; + display: inline-block; + margin-bottom: -3px; } -#templateBody > div { - border: 1px solid #a3a3a3; - border-radius: 1px; - background-image: linear-gradient(to right, #ffffff 0%, #fafafa 51%, #ebebeb 100%); - margin: 1px 1px; - padding: 0.1em 0.2em; - height: 1.2em; +#templateSelect { + width: 150px; } -#templateBody > div:hover { - border-color: #808080; - background-image: linear-gradient(to right, #fcfcfc 0%, #ededed 51%, #dedede 100%); +#templateBody>div { + border: 1px solid #a3a3a3; + border-radius: 1px; + background-image: linear-gradient(to right, #ffffff 0%, #fafafa 51%, #ebebeb 100%); + margin: 1px 1px; + width: 226px; + padding: 1px 2px; + font-size: 9px; } -#templateBody > div > div { - display: inline-block; +#templateBody>div:hover { + border-color: #808080; + background-image: linear-gradient(to right, #fcfcfc 0%, #ededed 51%, #dedede 100%); } -#templateBody > div > span { - float: right; - margin-inline: 1px; +#templateBody span { + display: inline-block; + margin: 0 1px; + float: right; + cursor: pointer; } -#templateBody > div > i { - float: right; +#templateBody span:hover { + color: #297cb8; } -#templateBody input, -#templateBody select { - width: 4.5em; - height: 1em; - border: 0; - background-color: #ffffff95; - color: #05044d; - font-style: italic; - font-family: var(--monospace); +#templateBody label { + float: right; + margin-right: 4px; +} + +#templateBody label:first-of-type { + margin-right: 12px; +} + +#templateBody input { + height: 4px; + width: 45px; + font-family: monospace; + height: 4px; + font-family: monospace; } #templateBody select { - width: 8em; - height: 1.4em; - cursor: pointer; - font-size: 0.9em; + border: 0; + background-color: rgba(255, 255, 255, 0); + width: 58px; + cursor: pointer; } -#templateBody .icon-resize-vertical { - cursor: row-resize; - font-size: 0.9em; - color: #555555; - margin: 1px 1px; -} - -#templateBody .icon-check-empty, -#templateBody .icon-check { - width: 1.1em; - cursor: pointer; - color: #575957; - font-size: 0.9em; -} - -#controlPoints { - fill: #ff0000; - stroke: #841f1f; - stroke-width: 0.25; - cursor: move; - opacity: 0.8; -} - -#controlPoints > path { - fill: none; - stroke: #0a0909; - stroke-width: 2; - opacity: 0.4; - cursor: pointer; -} - -#controlCells { - pointer-events: none; - fill: #82c8ff80; - stroke: none; -} - -#vertices > circle { - fill: #ff0000; - stroke: #841f1f; - stroke-width: 0.1; - cursor: move; - opacity: 0.8; -} - -#vertices > polygon { - fill: none; - stroke: #808080; - stroke-width: 0.1; -} - -#controlPoints > circle:hover, -#vertices > circle:hover { - stroke: #2c0808; -} - -#battleBody > table { - padding: 0.2em 0.6em 0.2em 0.6em; - border: 1px solid #ccc; - margin: 0.2em 0 0.4em 0; - display: block; - overflow: auto; - max-height: 34vh; - width: 100%; -} - -#battleBody > table .regiment { - width: 13em; - font-weight: bold; -} - -tr.battleCasualties, -tr.battleSurvivors { - font-style: italic; - font-size: 0.9em; -} - -#battleBottom div.battleTypes { - position: fixed; - background-color: #ffffff30; -} - -#battleBody div.battlePhases { - position: absolute; - background-color: #ffffff30; -} - -#battleBody div.battlePhases > button, -#battleBottom div.battleTypes > button { - width: 3.2em; - display: block; - margin: 0.2em 0; -} - -div#regimentSelectorBody { - max-height: 50vh; - font-size: 0.9em; -} - -div#regimentSelectorBody > div { - padding: 0.1em; - border: 1px solid #fff; -} - -div#regimentSelectorBody > div:hover { - border: 1px solid #ccc; -} - -div#regimentSelectorBody > div.selected { - border: 1px solid #b28585; -} - -div#regimentSelectorBody > div.inactive { - background-color: #eee; - color: #aaa; -} - -div#regimentSelectorBody > div > div { - display: inline-block; - pointer-events: none; +.controlPoints { + fill: #ff0000; + stroke: #841f1f; + stroke-width: 0.1; + cursor: move; + opacity: .8; } .drag-trigger { - border-left: 1em solid transparent; - border-right: 1em solid #000; - border-top: 1em solid transparent; - position: absolute; - right: -1px; - bottom: -1px; - opacity: 0.3; + border-left: 12px solid transparent; + border-right: 12px solid #916e7f; + border-top: 12px solid transparent; + position: absolute; + right: 0; + top: 100%; + margin-top: -12px; } .drag-trigger:hover { - cursor: move; - opacity: 0.6; + cursor: move; + border-right-color: #5e4fa2; +} + +#styleInputs div { + display: none; + line-height: 6px; +} + +#styleInputs #styleOcean, +#styleInputs #styleOpacity, +#styleInputs #styleFilter { + display: block; +} + +#styleInputs button { + padding: 0 6px; + margin: 0 2px; + border: 1px #827c7f solid; + background-color: #ffffff; +} + +#restoreStyle { + cursor: pointer; + font-size: xx-small; +} + +.pureInput { + display: inline-block; + width: 50px; + height: 10px; + font-size: small; + font-size: smaller; + font-family: monospace; } .tint { - filter: sepia(1) hue-rotate(200deg); -} - -.colorsContainer { - display: grid; - grid-template-columns: repeat(5, 1fr); - grid-column-gap: 0.3em; - grid-row-gap: 0.2em; + filter: sepia(1) hue-rotate(200deg); } .color-div { - width: 3em; - height: 1.5em; - border: 1px #999 solid; - cursor: pointer; + width: 32px; + height: 12px; + display: inline-block; + margin: 1px 2px; + border: 1px #c5c5c5 groove; + cursor: pointer; } #colorsSelect div { - height: 1.7em; - display: inline-block; - cursor: pointer; + height: 18px; + display: inline-block; + cursor: pointer; } .color-div:hover { - border-color: red; + border-color: red; } .hoveredColor { - box-shadow: 0 0 1px 1px #717171; + box-shadow: 0 0 1px 1px #717171; } .selectedColor { - outline: 2px solid #f87b66; + outline: 2px solid #f87b66; } #colorScheme { - margin: 6px 1px 4px 1px; + margin: 6px 1px 4px 1px; } -#debug path.selected { - stroke-width: 0.8; - stroke: #da3126; - fill: none; -} - -#debug > text { - font-size: 2px; - text-anchor: middle; - dominant-baseline: central; +#colorsSelectValue { + font-size: larger; + position: relative; + font-family: monospace; + font-weight: bold; + top: -3px; } .selectedCell { - stroke-width: 1; - stroke: #da3126; + stroke-width: 1; + stroke: #da3126; } -i.resetButton { - float: left; - padding-right: 0.4em; - font-size: 0.8em; - margin-top: 0.25em; - color: #ffffff; - cursor: pointer; +body .ui-dialog { + padding: 1px; + font-size: 12px; } -i.resetButton:active { - color: var(--dark-solid); +body .ui-dialog-titlebar { + font-size: 14px; +} + +.ui-dialog input { + height: 14px; } .ui-dialog button.pressed { - box-shadow: inset 1px 1px 0 0 #ccc; - border-color: #a6a6da; - background-color: #ecd8d8; - border-radius: 10%; + box-shadow: inset 1px 1px 0 0 #ccc; + border-color: #a6a6da; + background-color: #ecd8d8; } .ui-dialog input[type="range"] { - padding: 0; - height: 2px; - background: #d4d4d4; - position: relative; - appearance: none; - -webkit-appearance: none; + outline: none; + height: 2px; + background: #e9e9e9; + top: -4px; + position: relative; + appearance: none; + -webkit-appearance: none; } .ui-dialog input[type="range"]::-webkit-slider-thumb { - -webkit-appearance: none; - border-radius: 15%; - width: 1em; - height: 1em; - background: #e9e9e9; - border: 1px solid #9b9b9b; - cursor: pointer; + -webkit-appearance: none; + border-radius: 15%; + width: 10px; + height: 10px; + background: #e9e9e9; + border: 1px solid #9b9b9b; + cursor: pointer; } .ui-dialog input[type="range"]::-moz-range-thumb { - appearance: none; - border-radius: 15%; - width: 1em; - height: 1em; - background: #e9e9e9; - border: 1px solid #9b9b9b; - cursor: pointer; -} - -.ui-dialog input[type="number"] { - width: 4.5em; + appearance: none; + border-radius: 15%; + width: 10px; + height: 10px; + background: #e9e9e9; + border: 1px solid #9b9b9b; + cursor: pointer; } .ui-dialog .disabled { - opacity: 0.2; + opacity: 0.2; +} + +.ui-dialog .disabled::slider-thumb { + opacity: 0.2; +} + +.ui-dialog .disabled::-moz-range-thumb { + opacity: 0.2; } .ui-dialog:disabled { - cursor: default; + cursor: default; } div.slider { - width: 40em; - margin-top: 0.2em; + width: 40em; + margin-top: 0.2em; } div.slider .ui-slider-handle { - width: 3em; - height: 1.6em; - top: 50%; - margin-top: -0.8em; - text-align: center; - line-height: 1.6em; + width: 3em; + height: 1.6em; + top: 50%; + margin-top: -.8em; + text-align: center; + line-height: 1.6em; } #saveDropdown { - display: none; - position: absolute; - left: 29%; - top: 100%; - border: 1px solid #5e4fa2; - background-color: #a4879b; - width: 5em; + display: none; + position: absolute; + left: 29%; + top: 100%; + border: 1px solid #5e4fa2; + background-color: #a4879b; + width: 44px; } -#loadDropdown { - display: none; - position: absolute; - left: 53%; - top: 100%; - border: 1px solid #5e4fa2; - background-color: #a4879b; - width: 9em; +#saveDropdown>div { + padding: 2px 4px; + cursor: pointer; } -#loadDropdown > div, -#saveDropdown > div { - padding: 2px 4px; - cursor: pointer; +#saveDropdown>div:hover { + color: white; } -#loadDropdown > div:hover, -#saveDropdown > div:hover { - color: white; +#brushPower, +#brushRadius { + width: 88px; } #rescaleHigher, #rescaleLower, #rescaleModifier { - width: 3.7em; + width: 40px; +} + +#rescaler { + width: 175px; + top: -2px; } .italic { - font-style: italic; + font-style: italic; } .hidden { - display: none !important; -} - -.table { - max-height: 75vh; - max-width: 75vw; - overflow-x: hidden; - overflow-y: auto; - scrollbar-width: thin; -} - -@media screen and (max-width: 600px) { - .table { - max-width: unset; - } -} - -.dialog::-webkit-scrollbar, -#alertMessage::-webkit-scrollbar, -.table::-webkit-scrollbar, -.matrix-table::-webkit-scrollbar { - width: 6px; - height: 6px; - background-color: transparent; -} - -.dialog::-webkit-scrollbar-thumb, -#alertMessage::-webkit-scrollbar-thumb, -.table::-webkit-scrollbar-thumb, -.matrix-table::-webkit-scrollbar-thumb { - background-color: #aaa; - border-radius: 6px; -} - -.dialog::-webkit-scrollbar-thumb:hover, -#alertMessage::-webkit-scrollbar-thumb:hover, -.table::-webkit-scrollbar-thumb:hover, -.matrix-table::-webkit-scrollbar-thumb:hover { - background: #666; -} - -.dialog { - max-width: 93vw; -} - -.dialog > div { - width: max-content; -} - -div.header { - display: grid; - width: 0; - font-weight: bold; - font-size: 0.9em; -} - -div.header > div:first-child { - margin-left: 1.8em; + display: none; } .sortable { - cursor: pointer; + font-weight: bold; + font-size: 10px; + cursor: pointer; + display: inline-block; } .totalLine { - color: #666666; - font-style: italic; - font-size: 0.9em; - margin-bottom: 3px; + color: #666666; + font-style: italic; + font-size: 10px; + margin-bottom: 3px; } -.totalLine > div { - display: inline-block; +.totalLine>div { + display: inline-block; } div.states { - border: 1px solid #d4d4d4; - background-image: linear-gradient(to right, #fafafa80 0%, #f0f0f080 50%, #c8c8c880 100%); - margin: 0.1em 0; - padding: 0 0.2em; - font-size: 0.9em; - line-height: 1.5em; + border: 1px solid #d4d4d4; + background-image: linear-gradient(to right, #fcfcfc 0%, #f2f2f2 51%, #dedede 100%); + margin: 1px 0; + padding: 0 2px; + font-size: 10px; } -div.states:hover, -div.states.hovered { - border: 1px solid #c4c4c4; - background-image: linear-gradient(to right, #dedede 100%, #f2f2f2 50%, #fcfcfc 0%); +div.states:hover { + border: 1px solid #c4c4c4; + background-image: linear-gradient(to right, #dedede 100%, #f2f2f2 51%, #fcfcfc 0%); } -div.states > *, -div.states sup, -div.totalLine > div { - display: inline-block; +div.states * { + display: inline-block; } -div.states > input { - width: 7em; - background: none; - border: 0; +div.states sup { + display: inline-block; +} + +div.states>input { + width: 60px; + background: none; + border: 0; +} + +div.states>input.stateColor { + width: 13px; + height: 17px; + padding: 0px; + margin-right: -1px; + border: 0; + background: none; + cursor: pointer; } div.states div { - width: 3.2em; + width: 32px; } -div.states .biomeHabitability { - width: 4em; - -moz-appearance: textfield; +div.states .statePower { + width: 32px; + line-height: 14px; } -div.states > .statePopulation { - width: 3em; +div.states .stateBurgs { + width: 24px; } -div.states:hover > .hiddenIcon { - visibility: visible !important; +div.states>.stateArea { + width: 50px; } -div.states .icon-pencil, -div.states .icon-trash-empty, -div.states .icon-eye, -div.states .icon-pin, -div.states .icon-flag-empty, -div.states .icon-cw, -div.states .icon-lock, -div.states .icon-lock-open { +div.states>.statePopulation { + width: 30px; +} + +div.states .stateBurgs, +div.states .stateBIcon, +div.states .icon-trash-empty { + cursor: pointer; +} + +div.states>[class^="icon-"] { + color: #6e5e66; + padding: 0 1px 0 7px; +} + +div.states>[class="icon-arrows-cw"] { + color: #67575c; + padding: 0 2px 0 0; + font-size: 9px; + cursor: pointer; +} + +div.states>.before { + color: #6e5e66; + padding: 0 1px 0 0; +} + +div.states>.small { + font-size: 9px; +} + +div.states>.cultureName { + width: 50px; +} + +div.states>.culturePopulation { + width: 40px; +} + +div.states>.cultureBase { + width: 46px; cursor: pointer; + border: 0; + background-color: transparent; + -webkit-appearance: textfield; + -moz-appearance: textfield; + appearance: textfield; } -div.states .icon-resize-vertical { - cursor: row-resize; - font-size: 0.9em; +#burgsBody, +#countriesBody { + overflow: auto; + max-height: 362px; } -div.states > [class^="icon-"] { - color: #6e5e66; - padding: 0; +#countriesBody { + min-width: 366px; } -div.states > .icon-arrows-cw { - color: #67575c; - font-size: 0.9em; - cursor: pointer; +#burgsBody { + min-width: 260px; } -div.states > .before { - color: #6e5e66; - padding: 0 1px 0 0; +div.states .burgName, +div.states .burgCulture { + width: 56px; } -div.states > .small { - font-size: 0.9em; -} - -div.states > select { - width: 7em; - cursor: pointer; - border: 0; - background-color: transparent; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} - -div.states > .burgName, -div.states > .burgState, -div.states > .burgCulture { - width: 6em; -} - -div.states span.inactive { - color: #c6c2c2; -} - -div.states span.inactive:hover { - color: #abaaaa; -} - -div.states > .riverName { - width: 7em; -} - -div.states > .riverType { - width: 5em; -} - -.coaIcon { - stroke-width: 3; - width: 1.4em; - height: 1.4em; - margin: -0.3em 0; -} - -.coaIcon > use { - pointer-events: none; -} - -#diplomacyBodySection > div { - cursor: pointer; -} - -.changeRelations > * { - pointer-events: none; - cursor: pointer; -} - -#diplomacySelect { - width: 5em; - margin: 0.1em 0 0 -0.3em; - position: fixed; - background-color: #ffffff; - border: 1px solid #1891ff; -} - -#diplomacySelect > div { - width: 100%; - padding-left: 0.3em; -} - -#diplomacySelect > div:hover { - background-color: #1891ff; - color: #ffffff; - width: calc(100% - 0.3em); +div.states .burgPopulation { + width: 30px; } #burgsFooterPopulation { - border: 0; - width: 50px; - color: #666666; - font-style: italic; - line-height: 1.4em; + border: 0; + width: 50px; + color: #666666; + font-style: italic; + line-height: 14px; } -#burgBody div.label { - display: inline-block; - width: 6em; +div.states .enlange { + cursor: pointer; } -#burgBody > div > div, -#riverBody > div, -#routeBody > div, -#lakeBody > div { - padding: 0.1em; -} - -#riverBody div.label, -#riverBody input, -#riverBody select, -#routeBody div.label, -#lakeBody div.label, -#lakeBody input, -#lakeBody select { - display: inline-block; - width: 7em; -} - -#routeBody input, -#routeBody select { - display: inline-block; - width: 10em; -} - -#stateNameEditor div.label, -#provinceNameEditor div.label, -#regimentBody div.label, -#markerEditor div.label { - display: inline-block; - width: 5.5em; - padding: 0.3em 0; -} - -#exportToPngTilesScreen div.label { - display: inline-block; - width: 5em; -} - -#regimentBody input[type="number"] { - width: 5em; -} - -.burgFeature { - padding: 1px; - cursor: pointer; -} - -.burgFeature.inactive { - color: #ddd; -} - -.burgFeature.inactive:hover { - color: #abaaaa; +#countriesEditor div>.hidden { + display: none; } .placeholder { - opacity: 0; - cursor: default; - pointer-events: none; + opacity: 0; +} + +span.ui-dialog-title>input.stateColor { + width: 14px; + height: 18px; + border: 0; + background: none; + cursor: pointer; } div.states.selected { - border-color: #b28585; - background-image: linear-gradient(to right, #f2f2f2 0%, #ebe7e7 50%, #e5dadb 100%); -} - -div.states.active { - border: 1px solid #c4c4c4; - background-image: linear-gradient(to right, #dedede 100%, #f2f2f2 50%, #fcfcfc 0%); -} - -div.states.Self { - margin-bottom: 0.2em; - cursor: default !important; - padding: 0.2em 0 0 0.5em; - font-weight: bold; + border: 1px solid #b28585; + background-image: linear-gradient(to right, #e5dada 100%, #f2f2f2 51%, #fcfcfc 0%); } div.states button.selectCapital { - margin: -1px 21px 0 7px; - padding: 0px 3px; + margin: -1px 21px 0 7px; + padding: 0px 3px; } -div.states > input.biomeName { - width: 12em; +#scaleBody { + margin-left: 14px; } -div.states > div.biomeArea { - width: 5em; +#scaleBody>div>* { + display: inline-block; + font-size: 11px; } -#militaryBody div.states > input { - -moz-appearance: textfield; +#scaleBody>div>div { + width: 100px; } -#militaryBody div.states > input, -#militaryBody div.states > div, -#regimentsBody div.states > div { - width: 5em; +#scaleBody>div>select { + width: 110px; + border: 1px solid #e9e9e9; } -#emblemBody > div { - padding: 1px 3px; - transition: all 0.3s ease-out; +#scaleBody>div>input[type="text"] { + width: 110px; + border: 0; } -#emblemBody > div.active { - background-color: #54ca7728; +#scaleBody>div>input[type="range"] { + width: 80px; } -#emblemArmiger { - text-align: center; - display: block; +#scaleBody>div>input.output { + width: 30px; } -#emblemBody .label { - width: 6em; - display: inline-block; -} - -#emblemBody select { - width: 9em; -} - -#emblemsBottom { - margin-top: 4px; - text-align: center; -} - -#emblemUploadControl, -#emblemDownloadControl { - margin-top: 0.3em; - width: 100%; -} - -div.editorLine { - margin: 0.2em 0; - padding: 0 0.2em; - font-size: 0.9em; -} - -#emblemDownloadControl > input { - width: 4.1em; -} - -#picker text { - cursor: default; -} - -#pickerHeader { - fill: var(--header); - stroke: var(--dark-solid); - cursor: move; -} - -#pickerLabel { - fill: #f8ffff; - font-size: 12px; - font-weight: bold; - font-family: var(--sans-serif); - cursor: move !important; -} - -#pickerCloseRect { - cursor: pointer; - fill: var(--header); - stroke: #f8ffff; -} - -#pickerCloseText { - fill: #f8ffff; - font-size: 10px; - font-family: var(--sans-serif); - pointer-events: none; -} - -#pickerControls line { - stroke: #999999; - stroke-width: 2; -} - -#pickerControls circle { - fill: #ffeb3b; - stroke: #666666; - cursor: ew-resize; -} - -#pickerControls circle:hover { - fill: #eca116; - stroke: #000000; -} - -#pickerControls, -#pickerSpaces { - font-size: 11px; -} - -#pickerSpaces input { - width: 22px; - font-size: 9px; - -moz-appearance: textfield; -} - -#pickerSpaces input::-webkit-inner-spin-button, -#pickerSpaces input::-webkit-outer-spin-button { - -webkit-appearance: none; - margin: 0; -} - -#pickerColors rect, -#pickerHatches rect { - cursor: pointer; -} - -#picker rect.selected { - outline: 2px dashed #b90c0c; - stroke-width: 0; -} - -.hoverButton { - position: sticky; - margin-left: -1.8em; - margin-top: 1px; - background-color: #dedede; - font-size: 8px; - cursor: pointer; - padding: 0px 3px !important; -} - -.unitsHeader { - margin: 0.8em 0 0 -1.1em; - font-weight: bold; - font-style: italic; -} - -#unitsBottom, -#reliefBottom { - margin: 6px 0 0 6px; -} - -#unitsBody label { - display: inline-block; - width: 9em; -} - -#unitsBody > div > select, -#unitsBody > div > input[type="text"] { - width: 14.4em; - border: 1px solid #e9e9e9; -} - -#unitsBody input[type="range"] { - width: 9em; -} - -#unitsEditor i.icon-lock-open, -#unitsEditor i.icon-lock { - color: #626573; - font-size: 0.8em; - cursor: pointer; - position: fixed; - margin: 0.4em 0 0 -0.9em; +.scaleHeader { + margin-left: -10px; + font-weight: bold; + font-style: italic; + margin-top: 6px; } #ruler { - cursor: move; - fill: none; + cursor: move; } -#ruler .rulerPoints { - stroke: #4e5a69; - fill: yellow; - cursor: grab; -} - -#ruler .rulerPoints .control { - fill: #999999; +#ruler circle { + stroke: #4e5a69; + fill: yellow; } #ruler .white { - stroke: white; + stroke: white; } #ruler .gray { - stroke: #3d3d3d; - pointer-events: none; + stroke: #3d3d3d; } #ruler text { - font-family: var(--serif); - fill: #3d3d3d; - text-anchor: middle; - text-shadow: 0 0 4px white; - cursor: pointer; + font-family: tahoma; + fill: #3d3d3d; + stroke: none; + text-anchor: middle; + dominant-baseline: ideographic; + text-shadow: 0 0 4px white; + cursor: pointer; } -#ruler path.planimeter { - fill: lightblue; - fill-rule: evenodd; - fill-opacity: 0.5; - stroke: #737373; +#ruler .opisometer { + fill: none; } -#militaryOptionsTable select { - border: 1px solid #d4d4d4; +#ruler .planimeter { + fill: lightblue; + fill-rule: evenodd; + fill-opacity: 0.5; + stroke: #737373; } -#militaryOptionsTable input { - width: 9em; - border: 1px solid #d4d4d4; +#scaleBar { + stroke: none; + fill: none; + cursor: move; } -#militaryOptionsTable input[type="number"] { - width: 4em; +#scaleBar text { + fill: #353540; + text-anchor: middle; + font-family: Georgia; } -#militaryOptionsTable button { - width: 100%; +#scaleBottom { + margin: 6px 0 0 6px; } -#gridOverlay { - fill: none; +#barBackColor { + width: 24px; + height: 16px; + padding: 0px; + border: 0; + background: none; + cursor: pointer; } -#coordinateLabels { - fill: #333333; - font-family: var(--monospace); - text-shadow: 0 0 4px white; - stroke-width: 0; - dominant-baseline: central; - text-anchor: middle; +#overlay { + fill: none; } -ul.share-buttons { - margin: 4px 0 0 0; - padding-left: 8%; +#loading { + color: #fff5da; + text-align: center; + text-shadow: 0px 1px 4px #4c3a35; + max-width: 780px; + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + cursor: default; + user-select: none; +} + +#title_name { + text-align: left; + font-size: 2em; + margin-left: 5%; +} + +#title { + font-size: 4.5em; + margin: -12px 0 -6px 0; +} + +#version { + text-align: right; + font-size: 1.2em; +} + +#initial { + fill: none; + stroke: black; +} + +#init-rose { + stroke-dasharray: 1; + /*animation: spin 30s infinite ease-in-out;*/ + opacity: .7; + transform: translate(50%, 50%); +} + +@keyframes spin { + 0% { + transform: translate(50%, 50%) rotate(0deg); + } + 100% { + transform: translate(50%, 50%) rotate(359deg); + } +} + +#loading-text span, +#uploading-map span { + animation-name: blink; + animation-duration: 3s; + animation-iteration-count: infinite; + animation-fill-mode: both; +} + +#loading-text span:nth-child(2) { + animation-delay: 1s; +} + +#loading-text span:nth-child(3) { + animation-delay: 2s; +} + +@keyframes blink { + 0% { + opacity: 0; + } + 20% { + opacity: 1; + } + 100% { + opacity: .1; + } } ul.share-buttons li { - padding: 0; - background: none !important; - width: 16%; - margin: 0; + display: inline; + float: none; + padding: 4px; + background: 0; } ul.share-buttons img { - width: 2em; + width: 16px; } input[type="checkbox"] { - display: none; + display: none; } .checkbox, .checkbox-label { + margin: 5px; + cursor: pointer; +} + +.checkbox+.checkbox-label:before { + content: ''; + background: #ece6eb; + border-radius: 1px; + display: inline-block; + vertical-align: text-top; + width: 7px; + height: 7px; + padding: 2px; + margin-right: 3px; +} + +.checkbox:checked+.checkbox-label:before { + background: #997c89; + transition: .2s; + box-shadow: inset 0px 0px 0px 2px #ece6ea; +} + +#map-dragged { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + display: flex; + align-items: center; + justify-content: center; + z-index: 10; + pointer-events: none; + text-align: center; + background: rgba(0, 0, 0, .5); +} + +#map-dragged p { + font-size: 2.4em; + color: #fff5da; + text-shadow: 0px 1px 4px #4c3a35; +} + +#map-dragged p:before { + content: ''; + display: inline-block; + vertical-align: middle; + height: 100%; +} + +#capital-anchors, #town-anchors { + transform: translate(-0.47em, -0.47em); +} + +#cultureCenters circle:hover { + stroke: #000000b3; cursor: pointer; } -.checkbox + .checkbox-label:before { - content: ""; - display: inline-block; - vertical-align: bottom; - width: 0.6em; - height: 0.6em; - padding: 0.2em; - margin-right: 0.2em; - border: 1px solid darkgrey; - border-radius: 15%; - background: white; - font-family: var(--monospace); +#namesbaseEditor select, +#namesbaseEditor textarea { + font-size: 10px; + font-family: Copperplate, monospace; + outline: none; } -.checkbox:checked + .checkbox-label:before { - line-height: 0.8em; - font-weight: bold; - content: "✓"; - color: #333333; +#namesbaseEditor input { + font-size: 10px; + font-family: Copperplate, monospace; + outline: none; + height: 12px; } -div.textual select, -div.textual textarea, -div.textual input { - font-family: var(--monospace); -} - -div.textual fieldset { +#namesbaseEditor fieldset { margin: 3px 3px 5px 0; border-style: dashed; } -div.textual span, -.textual legend { - font-size: 0.9em; +#namesbaseEditor span, #namesbaseEditor legend { + font-size: 9px; font-weight: bold; } #namesbaseExamples { - font-family: var(--monospace); + font-family: Copperplate, monospace; cursor: pointer; } -#markers { - cursor: pointer; - font-family: var(--monospace); - user-select: none; - text-anchor: middle; - dominant-baseline: central; +#namesbaseName { + width: 80px; } -.highlighted { - outline-width: 2px; - outline-style: dashed; - outline-color: #0da6ff; - outline-offset: 100px; - fill: none; +#namesbaseMin, #namesbaseMax { + width: 33px; } -#notes { - display: none; - position: fixed; - width: 28vw; - right: 1vw; - top: 1vw; - font-size: 1.2em; - border: 1px solid #5e4fa2; - background: rgba(255, 250, 228, 0.7); - box-shadow: 2px 2px 5px -3px #3a2804; -} - -@media screen and (max-width: 600px) { - #notes { - width: 50vw; - } -} - -#notesHeader { - font-weight: bold; - font-size: 1.3em; - padding: 16px 0 4px 12px; - border-bottom: 1px solid #5e4fa2; -} - -#notesBody { - padding: 14px 12px; - max-height: 80vh; - overflow: auto; -} - -#notesBody > iframe { - user-select: none; -} - -#notesBody p { - margin: 4px; -} - -#notesLegend { - width: auto; - height: 87%; - outline: 0; - overflow-y: auto; - padding: 0.6em; - font-family: var(--monospace); - background-color: #fff; - border: 1px solid #dedede; - color: #000; -} - -svg.button { - position: relative; - background-color: transparent; - margin: -5px; - padding: 0; -} - -#reliefEditor > div > div { - font-style: italic; - display: inline-block; -} - -#reliefEditor div.reliefEditorLabel { - width: 4em; -} - -#reliefEditor input[type="range"] { - width: 16em; -} - -#reliefIconsDiv { - margin-top: 2px; - padding: 2px; - width: 100%; -} - -#reliefIconsDiv svg { +#namesbaseDouble { width: 40px; - height: 40px; - background-color: #e7e6e4; - border: 1px solid #a9a9a9; - cursor: pointer; -} - -#reliefIconsDiv svg:hover { - border-color: #5c5c5c; - background-color: #eef6fb; - transition: all 0.3s ease-out 3s; - transform: scale(2); -} - -#reliefIconsDiv svg.pressed { - border: 1px solid #b3352c; - background-color: #f2f2f2; -} - -#reliefIconsSeletionAny { - display: none; - text-anchor: middle; - dominant-baseline: central; -} - -#alertMessage { - user-select: text; - max-height: 70vh; - max-width: 75vw; - overflow: auto; -} - -#alertMessage ul { - padding-left: 1.2em; - margin: 1em 0; -} - -.pseudoLink { - cursor: pointer; - text-decoration: underline; -} - -.info-line { - font-size: 0.9em; - font-style: italic; - color: gray; - user-select: none; -} - -.optionsSeedRestore { - font-size: 12px; - cursor: pointer; - margin-right: 2px; -} - -.optionsSeedRestore:hover { - color: blue; -} - -#worldControls { - width: 16em; - display: inline-block; - vertical-align: top; -} - -#worldControls > div { - display: block; - margin: 1px 0; - padding: 2px 0; -} - -#worldControls input[type="number"] { - border: 1px solid #e5e5e5; - padding: 0px; - width: 4em; -} - -#worldControls i.icon-lock-open, -#worldControls i.icon-lock { - color: #626573; - font-size: 0.8em; - cursor: pointer; -} - -#globe { - stroke: black; - stroke-width: 1; -} - -#globeNoteLines { - stroke-dasharray: 5; - stroke: #bbb; -} - -#globaAxisLabels { - font-style: italic; - font-size: 9px; - font-family: var(--monospace); - stroke: none; - fill: #001754; -} - -#globeLatLabels { - font-size: 12px; - font-family: var(--monospace); - stroke: none; - fill: #001754; -} - -#globeWindArrows { - fill: none; - stroke: #6072a3; - cursor: pointer; -} - -#globeWindArrows path { - stroke-width: 1.7px; - fill: none; - stroke: #6072a3; - pointer-events: none; -} - -#globeWindArrows circle { - fill: #fff; - fill-opacity: 0; - stroke-opacity: 0.05; -} - -#globaAxisLabels #restoreWind:hover { - cursor: pointer; - fill: blue; -} - -#globeArea { - fill: white; - fill-opacity: 0.3; -} - -#globeGraticule { - fill: none; - stroke-width: 0.2; -} - -#globePrimeMeridian { - stroke: blue; - stroke-width: 1.4; -} - -#globeEquator { - stroke: red; - stroke-width: 1.4; -} - -#legend { - cursor: move; - user-select: none; -} - -.dontAsk { - margin: 0.9em 0 0 0.6em; - display: inline-flex; - align-items: center; -} - -#errorBox { - font-size: 0.9em; - font-family: var(--monospace); - color: #920303; - background-color: #dabdbd91; - padding: 2px; - border: 1px solid var(--header); -} - -.announcement { - background-color: #a18888; - color: white; - padding: 0.4em 0.5em; - border: dashed 1px var(--dark-solid); -} - -.speaker { - font-size: 0.9em; - cursor: pointer; -} - -#prompt { - position: absolute; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - max-width: 23em; - padding: 1.2em; - background-color: var(--bg-dialogs); - border: solid 1px var(--dark-solid); - font-size: 1.2em; - z-index: 1000; -} - -#promptText { - padding: 0 0 0.6em 0; - font-weight: bold; - font-family: var(--sans-serif); -} - -#mapOverlay { - position: absolute; - inset: 0; - display: flex; - align-items: center; - justify-content: center; - z-index: 10; - pointer-events: none; - text-align: center; - background: rgba(0, 0, 0, 0.5); - font-size: 2.4em; - color: #fff5da; - text-shadow: 0px 1px 4px #4c3a35; -} - -.epgrid line { - stroke: lightgrey; - stroke-opacity: 0.5; - shape-rendering: crispEdges; -} - -.epgrid path { - stroke-width: 0; -} - -#debug { - font-size: 1px; - opacity: 0.8; -} - -#markerTypeSelector { - font-size: 0.85em; -} - -#markerTypeSelectorWrapper { - position: relative; -} - -#markerTypeSelectMenu { - display: none; -} - -#markerTypeSelectMenu.visible { - display: block; - position: absolute; - height: 250px; - width: 170px; - overflow-y: scroll; - background: inherit; - bottom: 100%; - left: 0; - background: white; -} - -#markerTypeSelectMenu > button { - display: block; - width: 100%; - border: 1px solid #ddd; - margin-bottom: 1px; -} - -#markerTypeSelectMenu > button:hover { - background: #ccc; -} - -.separator { - display: flex; - align-items: center; - text-align: center; - - font-style: italic; - font-weight: bold; - color: #222; - margin: 0.8em 0 0 0; -} -.separator::before, -.separator::after { - content: ""; - flex: 1; - border-bottom: 1px solid #333; -} -.separator:not(:empty)::before { - margin-right: 0.25em; -} -.separator:not(:empty)::after { - margin-left: 0.25em; -} - -@keyframes clockwiseBorderPulse { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(360deg); - } -} - -#chat-widget-container { - user-select: none; -} - -#chat-widget-minimized { - animation: fadeIn 1s ease-in; - transform: scale(0.65); - opacity: var(--bg-opacity); -} - -@keyframes fadeIn { - from { - opacity: 0; - } - to { - opacity: var(--bg-opacity); - } -} - -@media print { - div, - canvas { - display: none; - } -} - -@media only screen and (max-width: 420px) { - table { - width: 100%; - } - - .tabcontent { - max-width: 100%; - } - - .drag-trigger { - display: none; - } -} - -@media (prefers-color-scheme: dark) { - body { - background: #25252a; - } } diff --git a/index.html b/index.html index 5a18e579..75433fbd 100644 --- a/index.html +++ b/index.html @@ -1,8184 +1,1111 @@ - - - - - Azgaar's Fantasy Map Generator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Azgaar's Fantasy Map Generator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + Anchor + + - - - - - - - - - - - - Azgaar's - Fantasy Map Generator - - LOADING... - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Azgaar's + Fantasy Map Generator + v. 0.58b + LOADING... + + + + + + New Map! - - - - - ► - - - New Map! - + + + + Layout + Style + Options + Customize + ? - - - - - - - ◄ - - Layers - Style - Options - Tools - About + + Select preset: + + Political map + Cultural map + + Heightmap + Pure landmass + + Displayed layers. Drag to move, click to toggle + + Ocean + Heightmap + Grid + Overlay + Cultures + Routes + Rivers + Countries + Borders + Relief + Labels + Icons + + + + Hide small labels + + Show tooltips - - - Layers preset: - - Political map - Cultural map - Religions map - Provinces map - Biomes map - Heightmap - Physical map - Places of interest - Military map - Emblems - Pure landmass - Custom (not saved) - - - - - Displayed layers and layers order: - - - Texture - - - Heightmap - - - Biomes - - - Cells - - - Grid - - - Coordinates - - - Wind Rose - - - Rivers - - - Relief - - - Religions - - - Cultures - - - States - - - Provinces - - - Zones - - - Borders - - - Routes - - - Temperature - - - Population - - - Ice - - - Precipitation - - - Emblems - - - Labels - - - Icons - - - Military - - - Markers - - - Rulers - - - Scale Bar - - - Vignette - - - Click to toggle, drag to raise or lower the layer - Ctrl + click to edit layer style - - - View mode: - - Standard - - - 3D scene - - Globe + + + Select element: + + Grid + Borders (neutral) + Borders (state) + Coastline + Countries + Cultures + Heightmap + Icons + Labels + Lakes + Landmass + Ocean + Overlay + Relief + Rivers + Roads + Rulers + Trails + Searoutes + Scale bar + + + + + Ensure Overlay layer is active (see Layout tab) + Overlay type: + Hex grid + Square grid + Wind rose + + Size: + 5 + + + Elements: + + Pattern + + Layers + Background: #000000 + Foreground: #53679f + + + Fill: + #5E4FA2 + + + Stroke: + #5E4FA2 + + + Stroke width: + 1 + + + Stroke dasharray: + + + Stroke linecap: + Inherit + Butt + Round + Square + + + + Font size: +- + + + Radius: +- + Stroke: +- + + + Opacity: + 1 + + + Filter: + None + Blur 0.2 + Blur 1 + Blur 5 + Blur 10 + Splotch + Blured Splotch + Shadow + Pencil + Turbulence + + + + Color scheme: + Bright + Light + Green + Monochrome + - - - - Style preset: - - - - - - Select element: - - Anchor Icons - Biomes - Borders - Burg Icons - Cells - Coastline - Coordinates - Cultures - Emblems - Fogging - Grid - Heightmap - Ice - Labels - Lakes - Landmass - Legend - Markers - Military - Ocean - Population - Precipitation - Provinces - Relief Icons - Religions - Rivers - Routes - Rulers - Scale Bar - States - Temperature - Texture - Vignette - Wind Rose - Zones - - - - - Ensure the element visibility is toggled on! - - - - - Group - - - - - - - - - - - Render ocean heights - - - - - Terracing - - - - - - - Reduce layers - - - - - - - Simplify line - - - - - - - Line style - - - Curved - Linear - Rectangular - - - - - - Color scheme - - - - - - - - - - Opacity - - - - - - - - - Column items - - - - - - - Background - - - #ffffff - - - - - Opacity - - - - - - - - - Rural color - - - #0000ff - - - - - Urban color - - - #ff0000 - - - - - - - Image - - - No texture - Folded paper big - Folded paper small - Gray paper - Soiled paper horizontal - Soided paper vertical - Plaster - Ocean - Antique small - Antique big - Pergamena small - Marble big - Marble small - Marble Blue - Marble Blue big - Stone small - Stone big - Timber Cut small - Timber Cut big - Mars small - Mars big - Mercury small - Mercury big - Mauritania small - Iran small - Spain small - - - - - - - Shift by axes - - - - - - - - - - Preset - - - - - - - Position - - - x - - width - - - - y - - height - - - - - - - Radius - - x - - y - - - - - - Blur - - - - - - - - - Pattern - - - No pattern - Pattern 1 - Pattern 2 - Pattern 3 - Pattern 4 - Pattern 5 - Pattern 6 - Kiwiroo - - - - - - Pattern opacity - - - - - - - Ocean layers - - - No outline - Random - Standard 3 - Indented 3 - Standard 4 - Smooth 6 - Smooth 9 - - - - - - Color - - - #466eab - - - - - - - Type - - - Hex grid (pointy) - Hex grid (flat) - Square grid - Square 45 degrees grid - Truncated square grid - Tetrakis square grid - Triangle grid (horizontal) - Triangle grid (vertical) - Trihexagonal grid - Rhombille grid - - - - - - Scale - - - - - - - - - - - Shift by axes - - - - - - - - - - Size - - - - - - - Shift by axes - - - - - - - - - - Style - - - Simple - Gray - Colored - - - - - - Size - - - - - - - Density - - - - - - - - - Fill color - - - #5E4FA2 - - - - - - - Stroke color - - - #5E4FA2 - - - - - - - Stroke width - - - - - - - - - Letter spacing - - - - - - - - - Stroke dash - - - - Inherit - Butt - Round - Square - - - - - - - - Text shadow - - - - - - - - - Font - - - - - - - - - - Font size - - + - - - - - - - - - - Radius - - + - - - - - - - - - - Size - - + - - - - - - - - - - - - Automatically change filter on zoom - - - - - - - Fill opacity - - - - - - - Labels size - - - - - - - Labels color - - - #000 - - - - - - - Body opacity - - - - - - - Body filter - - - - - - Halo is only rendered if "Rendering" option is set to "Best quality"! - - - - - Halo width - - - - - - - Halo opacity - - - - - - - Halo blur - - - - - - - - - Fill opacity - - - - - - Box Size - - - - - - - - - State size - - - - - - - Province size - - - - - - - Burg size - - - - - - - - - Toggle visibility automatically - - - - - - - Filter - - - - - - - Clipping - - - No clipping - Clip water - Clip land - - - - - - - - - - Keep initial size on zoom change - - - - - - - - - Toggle visibility automatically - - - - - - - Rescale on zoom - - - - - - - Size - - Bar - - Font - - - - - - Position - - x - - y - - - - - - Label - - - - - - - Back opacity - - - - - - - Back fill - - - - - - - - Back stroke - - - - - Width - - - - - - Back padding - - - - - - - - - - Back filter - - - - - - - Toggle global filters: - Grayscale - Sepia - Dingy - Tint - + + Toggle filters: + Grayscale + Sepia + Dingy + Tint - - - - Map settings (new map to apply): - - - - - - - Canvas size - - - x - - px - - - - - - - - - Map seed - - - - - - - - - - - - - Points number - - - - - 10K - - - - - - - - Map name - - - - - - - - - - - - - Year and era - - - - - - - - - - - - - - Heightmap - - - - - - - - - - - Cultures number - - - - - - - - - - - - - Cultures set - - - All-world - European - Oriental - English - Antique - High Fantasy - Dark Fantasy - Random - - - - - - - - - - States number - - - - - - - - - - Provinces ratio - - - - - - - - - - Size variety - - - - - - - - - - Growth rate - - - - - - - - - - Towns number - - - - - - - - - - - - - Religions number - - - - - - - - - - State labels - - - Auto - Short names - Full names - - - - - - - - Generator settings: - - - - - Interface size - - - - - - - - Tooltip size - - - - - - - - - - Theme color - - - - - - - - - - - Transparency - - - - - - - - Autosave interval - - - - - - - - - - - Onload behavior - - - Generate random map - Open last saved map - - - - - - - - Azgaar assistant - - - Show - Hide - - - - - - - Speaker voice - - - - - 🔊 - - - - - - - - Emblem shape - - - - Culture-specific - Culture-random - State-specific - - - Heater - Spanish - French - - - Horsehead - Horsehead Edgy - Polish - Hessen - Swiss - - - Boeotian - Roman - Kite - Old French - Renaissance - Baroque - - - Targe - Targe2 - Pavise - Wedged - - - Flag - Pennon - Guidon - Banner - Dovetail - Gonfalon - Pennant - - - Round - Oval - Vesica Piscis - Square - Diamond - - - Fantasy1 - Fantasy2 - Fantasy3 - Fantasy4 - Fantasy5 - - - Noldor - Gondor - Easterling - Erebor - Iron Hills - UrukHai - Moria Orc - - - - - - - - - - - - - Zoom extent - - min - - max - - - - - - - - - - Rendering - - - Best quality - Best performance - - - - - - - - - - Language - - Init Google Translate - - - - - - + + + Generation options (new map to apply): + + + + Map size + + w: + + h: + + + + + + + + + Map cells density + + + + + 1 + + + + + + + Heightmap template + + + Volcano + High Island + Low Island + Continents + Archipelago + Atoll + + + + + + + + + Burgs count + + + + + 500 + + + + + + + States count + + + + + 13 + + + + + + + States disbalance + + + + + 5 + + + + + + + Neutral distance + + + + + 200 + + + + + + + Cultures count + + + + + 7 + + + + + + + Precipitation + + + + + 15 + + + + + + + Swampiness + + + + + 10 + + + + + Ocean layers + + + Random + No outline + Standard 3 + Indented 3 + Standard 4 + Smooth 6 + Smooth 9 + + + + + + Generator settings: + + + + PNG resolution + + + + + 5x + + + + + Zoom extent + + o: + + i: + + + + + + + + Reset Defaults + + + + Customize: + Heightmap + Countries + Cultures + Scale + + + Heightmap customization: - - Configure World - - - Reset to defaults - + Edit + Clear all + Complete + + + + Tools: + Paint Brushes + Template Editor + Image Converter + Perspective View + + + + Render ocean cells + + Change heights + + Landmass: 0 - - - Edit - - - Biomes - - - Burgs - - - Cultures - - - Diplomacy - - - Emblems - - - Heightmap - - - Markers - - - Military - - - Namesbase - - Notes - - Provinces - - - Religions - - - Rivers - - - Routes - - - States - - Units - Zones - - - Regenerate - - - Burgs - - Cultures - Emblems - Ice - - State Labels - - - Markers - - - Military - - - Population - - - Provinces - - - Relief - - Religions - - Rivers - - Routes - - States - - - Zones - - - - Add - - - Burg - - - Label - - - Marker - - - River - - Route - - - Show - - - Cells - - - Charts - - - - Create - - Submap - Transform - + + Click to add: + Burg + Label + Relief Icon + River + Route - - - Heightmap customization tools: - - Paint Brushes - Template Editor - Image Converter - Preview - 3D scene - - - Options: - - Edit mode: - - - Render ocean cells - - - - Allow water erosion - - - Depressions filling max iterations: - - - - - - Depression depth threshold: - - - - - - Statistics: - - Land cells: 0 - Mean height: 0 - - + Cell info: - Coord: / - Cell: - Height: + Coord: 0/0 + Cell: 0 + Height: 0 + Flux: 0 + + + Type: n/a + Country: n/a + Culture: n/a + Burg: n/a - - - - Fantasy Map Generator is an - open source - tool by Azgaar. You may use auto-generated maps as they are, edit them or even create a new map from - scratch. Check out the - Quick start, Q&A, - Video tutorial, and - hotkeys for - guidance. - - - - Join our Discord server and - Reddit community to ask - questions, get help and share maps. The created maps can be used for free, even for commercial purposes. - - - - The project is under active development. Creator and main maintainer: Azgaar. To track the development - progress see the - devboard. For older - versions see the - changelog. - Please report bugs - here. You can also - contact me directly via email. - - - - - - - - - - - - SUPPORT ON PATREON - - - - - - Special thanks to - all supporters on Patreon! - - - - - - - - Support Ukraine - - war.ukraine.ua/support-ukraine - - - - - - - Check out our other projects: - - • Armoria: a tool for creating heraldic - coats of arms - - - • Deorum: a vast gallery of customizable fantasy - characters - - - - - Chinese localization: 8desk.top - - - - - - - - - - - - - - - - - - - + + + Fantasy Map Generator is an open source tool which procedurally generates fantasy maps. You may use auto-generated maps as they are, edit them or even create a map from scratch. Check out the quick start tutorial and project wiki for guidance. Join our Reddit Community if you have questions, need any help, have a suggestion or just want to share a created map. + The project is under active development. For older versions see the changelog. Some details are covered in my blog. To track the current progress see the devboard. + Please report bugs here. You may also send me an email. + + + + + + + + + + New Map + Save as + + .map + .svg + .png + Load + Reset Zoom + + + - - New Map - Export - Save - Load - Reset Zoom - + + + + + + + + + + + + + + + + + + + + + + + + 0° + + + + + + + + + + + + + + + + + + 0° + + + + + + + + + + + + + + roads + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + mounts + hills + swamps + forests + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0° - - - - Exit Customization - + + + + + + + + + + + + + + + + + + + - - - - - - - - Equator: - - °C = - - - - - - - North Pole: - - °C = - - - - - - - - South Pole: - - °C = - - - - - - - Map size: - % - - - - - - - Latitudes: - - NS - - - - - - - Longitudes: - - WE - - - - - - - Precipitation: - % - - - - - Canvas size: - px = - - - Meridian length: - px = - - - - Coords: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - wind - latitude - - - 90° - 60° - 30° - 0° - 30° - 60° - 90° - - - - - - - - - - - Restore winds - - - - - - Presets: - Whole world - Northern - Tropical - Southern - - - - - - - - - - - - - - - - - - 🔊 - - - - - - - - - - - - - - - - - - - - - - - - - - - - Name: - - - - 🔊 - - - - Type: - - - - - Mainstem: - - - - - Basin: - - - - - Discharge: - - - - - Length: - - - - - Mouth width: - - - - - Source width: - - - - - Width modifier: - - - - - - - - - - - - - - - - - - - - - - - - - Name: - - - - 🔊 - - - - Type: - - - - - - - - - Area: - - - - - Shore length: - - - - - Elevation: - - - - - Average depth: - - - - - Max depth: - - - - - Supply: - - - - - Evaporation: - - - - - Inlets: - - - - - Outlet: - - - - - - - - - - - - - - Height scale: - Curve: - - Linear - Basis spline - Bundle - Cubic Catmull-Rom - Monotone X - Natural - - - - - - - - - - - Name: - - 🔊 - - - - - Group: - - - - - - - Length: - - - - - - - - - - - - - - - - - Click on map to add/remove route points - - - - - - Group: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - Mode: - - - - - Set: - - Simple - Colored - Gray - - - - - Size: - - - - - - Radius: - - - - - - Spacing: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Any - - - - - - - - - - - - - - - - - - - - - - Name: - - 🔊 - - - - - Type: - - Generic - River - Lake - Naval - Nomadic - Hunting - Highland - - - - - Culture: - - - - - - Population: - - - - - - Temperature: - - - - - - - - - - Elevation: - above sea level - - - - Features: - - - - - - - - - - - - - - Burg preview: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Type: - - - - - Icon: - 👑 - select - - - - Size: - - - - - - Icon shift: - - - - - - Pin shape: - - Bubble - Pin - Square - Squarish - Diamond - Hex - Hexy - Shieldy - Shield - Pentagon - Heptagon - Circle - No - - - - - Pin colors: - - - - - - - - - - - - - - - - - - - 🔊 - - - - - Emblem: - - change - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Attackers - - - - - - - - - - - - - Defenders - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - State - - - Regiment - - Total - - Distance - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Radius: - - - - - - Power: - - - - - - - - Power: - - - - - - - change only land cells - - - - - - - - - - - - - - - - - - - - h ≥ - - ≤ - - ⇒ - - × - ÷ - + - - - ^ - - - - - - - - - Select template: - - Custom - Volcano - High Island - Low Island - Continents - Archipelago - Atoll - Mediterranean - Peninsula - Pangea - Isthmus - Shattered - Taklamakan - Old World - Fractious - - - - H - P - R - T - S - M - I - + - * - - ~ - - - - - - Hill - - - y: - x: - h: - n: - - - - - - - - - - - - Seed: - - - - - - - - - - - - - - - - - - Overlay opacity: - - - - - - Set height: - - (0) - - - - - Assigned colors (): - - - - - Unassigned colors (): - - - - - Complete the conversion - - - - - - - Biome - - - Habitability - - - Cells - - Area - - Population - - - - - - - - Biomes: 0 - - - Cells: 0 - - - Land Area: 0 - - - Population: 0 - - - - - - - - - - - - Brush size: - - - - - - - - - - - - - - - Short name: - - 🔊 - - - - - - Form name: - - blank - - Beylik - Despotate - Dominion - Duchy - Emirate - Empire - Horde - Grand Duchy - Heptarchy - Khaganate - Khanate - Kingdom - Marches - Principality - Satrapy - Shogunate - Sultanate - Tsardom - Ulus - Viceroyalty - - - Chancellery - City-state - Diarchy - Federation - Free City - Most Serene Republic - Oligarchy - Protectorate - Republic - Tetrarchy - Trade Company - Triumvirate - - - Confederacy - Confederation - Conglomerate - Commonwealth - League - Union - United Hordes - United Kingdom - United Provinces - United Republic - United States - United Tribes - - - Bishopric - Brotherhood - Caliphate - Diocese - Divine Duchy - Divine Grand Duchy - Divine Principality - Divine Kingdom - Divine Empire - Eparchy - Exarchate - Holy State - Imamah - Patriarchate - Theocracy - - - Commune - Community - Council - Free Territory - Tribes - - - - - - - - Full name: - - 🔊 - - - - - - Update label on Apply - - - - - - - Province - - - Form - - - Capital - - - State - - - Burgs - - Area - - Population - - - - - - - - Provinces: 0 - - - Burgs: 0 - - - Mean area: 0 - - - Mean population: 0 - - - - - - - - - - - - - - - - Brush size: - - - - - - - - - - - State: - - - - - - - - State - - - Relations - - - - - Click on state name to see relations.Click on relations name to change it - - - - - - - - - - - - - - - - - - - Short name: - - 🔊 - - - - - - Form name: - - blank - Area - Autonomy - Barony - Canton - Captaincy - Chiefdom - Clan - Colony - Council - County - Deanery - Department - Dependency - Diaconate - District - Earldom - Governorate - Island - Islands - Land - Landgrave - Mandate - Margrave - Municipality - Occupation zone - Parish - Prefecture - Province - Region - Republic - Reservation - Seneschalty - Shire - State - Territory - Tribe - - - - - - - Full name: - - 🔊 - - - - - Dominant culture: - - - - - - Select base: - - Names data: - - - - - - - Name: - - Length: - - - Doubled: - - - - - Generated examples: - - - - - - - - - - - - - - - - - - - - Description - Type - Cells - Area - Population - - - - - - - Zones: 0 - - - Cells: 0 - - Area: 0 - - Population: 0 - - - - - - - - - - - - - Brush size: - - - - - Change land only - - - - - - - - - - - - - - Type: - - - - - - - - Element: - - Element name: - - 🔊 - - - - - - - - - - - - - - - - - - Model: - - - - Temperature: - - - Key: - - - - - - - - - - - - - - - - State: - - - - Province: - - - - Burg: - - - - - Shape: - - - Heater - Spanish - French - - - Horsehead - Horsehead Edgy - Polish - Hessen - Swiss - - - Boeotian - Roman - Kite - Old French - Renaissance - Baroque - - - Targe - Targe2 - Pavise - Wedged - - - Flag - Pennon - Guidon - Banner - Dovetail - Gonfalon - Pennant - - - Round - Oval - Vesica Piscis - Square - Diamond - - - Fantasy1 - Fantasy2 - Fantasy3 - Fantasy4 - Fantasy5 - - - Noldor - Gondor - Easterling - Erebor - Iron Hills - UrukHai - Moria Orc - - - - - - Size: - - - - - - - - - - - - - - - Any image - - - Prepared SVG - - Comperess raster - | - Optimize vector - - - - - SVG - - - PNG - - - JPG - - - - - - - - - Distance: - - - - Distance unit: - - Mile (mi) - Kilometer (km) - League (lg) - Versta (vr) - Nautical mile (nmi) - Nautical league (nlg) - Custom name - - - - - - - 1 map pixel: - - - - - Area unit: - - - - - - Altitude: - - - - Height unit: - - Feet (ft) - Meters (m) - Fathoms (f) - Custom name - - - - - - Exponent: - - - - - - Temperature: - - - - Temperature scale: - - degree Celsius (°C) - degree Fahrenheit (°F) - Kelvin (K) - degree Rankine (°R) - degree Delisle (°De) - degree Newton (°N) - degree Réaumur (°Ré) - degree Rømer (°Rø) - - - - - - Population: - - - - - 1 population point: - - - - - - Urbanization rate: - - - - - - Urban density: - - - - - - - - - - - - - - - - - - - - - Burg - - Province - - State - - Culture - - - Population - - - Features - - - - - - - State: - - - Culture: - - - - - - Burgs: 0 - - - - Average population: 0 - - - - - - - - - - - - - - - - - - - Route - - - Group - - - Length - - - - - - - - Total routes: 0 - - - Average length: 0 - - - - - - - - - - - - - - - - River - - - Type - - - Discharge - - Length - Width - - Basin - - - - - - - - Rivers: 0 - - - Average discharge: 0 - - - Length: 0 - - - Width: 0 - - - - - - - - - - - - - - - - - State - - - Total - - - Population - - - Rate - - - War Alert - - - - - - - - States: 0 - - - Total forces: 0 - - - Average forces: 0 - - - Average rate: 0% - - - Average alert: 0 - - - - - - - - - - - - - - - - - - State - - - Name - - - Total - - - - - - - - - - - State: - - - - - - - - - - - Icon - Unit name - Biomes - States - Cultures - Religions - Rural - Urban - Crew - Power - Type - - Separate - - - - - - - - - - - - Type - - - - - - - - - - Total: 0 markers - - - - - - - - ❓ - - - - - - - - - - - - Preset name: - - - - - - Style JSON: - - - - - - - - - - - - - There are 3 ways to add a custom font: - - Google font. Open Google Fonts, find - a font you like and enter its name to the field below. - - - Local font. If you have a font - installed on your computer, just provide the font name. Make sure the browser is reloaded after the installation. The font won't work - on machines not having it installed. Good source of fonts are - Fontdesk and - DaFont. - - - Font URL. Provide font name and link to the font file hosted online. The best free font - hostings are Google Fonts and - CDN Fonts. To get font file open the link to css - provided by these services and manually copy the link to woff2 of desired variant. To add another - variant (e.g. Cyrillic), add the font one more time under the same name, but with another URL - - - - Google font - Local font - Font URL - - - - - - - - - - - Cell: X: Y: - - Latitude: - Longitude: - Geozone: - Area: 0 - Type: n/a - Precipitation: 0 - River: no - Population: 0 - Elevation: 0 - Depth: 0 - Temperature: 0 - Biome: n/a - State: n/a - Province: n/a - Culture: n/a - Religion: n/a - Burg: n/a - - - - - Unicode emojis - - Select from the list or paste a Unicode character here: - - . See EmojiDB to search for emojis - - - - - - External images - - Paste link to the image here: - - Add - - - - - - - - This operation is destructive and irreversible. It will create a completely new map based on the current one. - Don't forget to save the .map file to your machine first! - - - - - Points number - - - 10K - - - - - - Rescale burg styles - - - - - - - This operation is destructive and irreversible. It will create a completely new map based on the current one. - Don't forget to save the .map file to your machine first! - - - - Points number - - - 10K - - - Shift - - X: - Y: - - - Rotate - - - 0° - - - Scale - - - 1x - - - Mirror - - - horizontally - - vertically - - - - - - - - - - - - Rotation: - - - - - - Height scale: - - - - - - Lightness: - - - - - - Texture resolution: - - 512x512px - 1024x1024px - 2048x2048px - 4096x4096px - 8192x8192px - - - - - Sun position and color: - - - - - - - - - - Show 3D labels - - - - - Show sky and extend water - - - - - Smooth geometry [slow] - - - - Sky: - Water: - - - - - - Rotation: - - - - - - Texture resolution: - - 0.5x - 1x - 2x - 4x - 8x - - - - - Equirectangular projection is used - - - - - - - - - - - - - - - Download image - - - .svg - - - .png - - - .jpeg - - - tiles - - - - Show all labels - - - - - PNG / JPEG scale: - - - - - Generator uses pop-up window to download files. Please ensure your browser does not block popups. - - Export to GeoJSON - - cells - routes - rivers - markers - - - GeoJSON format is used in GIS tools such as QGIS. Check out - wiki-page - for guidance. - - - Export To JSON - - full - minimal - - pack cells - - - grid cells - - - Export in JSON format can be used as an API replacement. - - - It's also possible to export map to Foundry VTT, see - the module. - - - - - - Save map to - - machine - - - dropbox - - - browser - - - - Maps are saved in .map format, that can be loaded back via the Load in menu. There is no way to - restore the progress if file is lost. Please keep old save files on your machine or cloud storage as backups. - - - - - - Load map from - - machine - - - URL - - storage - - - Click on storage to open the last saved map. - - - - Or load from your Dropbox account - - Connect - - - - - - Load - - Share - - - - - - - - - - - - - - Map will be split into tiles and downloaded as a single zip file. Avoid saving too large images - - Columns: - - - - - Rows: - - - - - Scale: - - - - - Total size: - 1000 x 1000 px - - - - - - Warning! - - - - - - - Confirm - Cancel - - + + + + + + + 1000 - - - + + + + + + + Base template: + Custom + Volcano + High Island + Low Island + Continents + Archipelago + Atoll + + + + M + H + P + R + T + S + + + * + ~ + + + Mountain + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + 0 + + + Assigned colors: + + + Unassigned colors: + + + + + + ↥ + ↧ + = + ~ + H + P + R + T + + + R: + + H: + + + + + + + + + h ≥ + + ≤ + + ⇒ + + × + ÷ + + + - + ^ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Country + Capital + Expan. + Cells + Burgs + Area + Population + + + + Countries: 0 + Burgs: 0 + Land Area: 0 + Population: 0 + + + + + + + + + + + Brush size: + + + + + + + Neutral distance: + + + + + + + + + + + + + Burg + Culture + Population + Type + + + + Burgs: 0 + Average burg: + + no + + + + + + + + + + + + + + + + Culture + Cells + Area + Population + Namesbase + + + + + Cultures: 0 / 7 + Cells: 0 + Area: 0 + Population: 0 - - - Drop a map file to open - - - - - - - - - - - - + + + + + + + Brush size: + + + + + + + - - - - - - - - - - - - - - - - - Port - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Select base: + + Base name: + + + + Names data: + + + + Method: + Markov let-to-let + Markov let-to-syl + Markov syl-to-syl + Random selection + Length: + + + Dublication: + + + + Generated examples: + + + + + + + + + + + + + + + + + + Distances: + + + Distance unit: + + Mile + Kilometer + League + Versta + Custom name + + + + 1 map pixel = + + + + + Area unit: + + + + + Scale bar: + + + Scale bar size: + + 1 + + + Scale bar label: + + + + Background opacity: + + + + + + Population: + + + 1 population point = + + + + + Urbanization rate: + + + + + + + + + + + + + + + + Drop to upload + + + + Warning! + + + Сlick the arrow button to open options + + + + + + + + + + + diff --git a/libs/alea.min.js b/libs/alea.min.js deleted file mode 100644 index f4ecef67..00000000 --- a/libs/alea.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/*https://github.com/macmcmeans/aleaPRNG/blob/master/aleaPRNG-1.1.js -©2010 Johannes Baagøe, MIT license; Derivative ©2017-2020 W. Mac" McMeans, BSD license.*/ -const aleaPRNG=function(){return function(n){"use strict";var r,t,e,o,a,u=new Uint32Array(3),i="";function c(n){var a=function(){var n=4022871197,r=function(r){r=r.toString();for(var t=0,e=r.length;t>>0,n=(o*=n)>>>0,n+=4294967296*(o-=n)}return 2.3283064365386963e-10*(n>>>0)};return r.version="Mash 0.9",r}();r=a(" "),t=a(" "),e=a(" "),o=1;for(var u=0;uarguments[1]&&(n=arguments[1],r=arguments[0]),f(n)&&f(r)?Math.floor(l()*(r-n+1))+n:l()*(r-n)+n},l.restart=function(){c(a)},l.seed=function(){c(Array.prototype.slice.call(arguments))},l.version=function(){return"aleaPRNG 1.1.0"},l.versions=function(){return"aleaPRNG 1.1.0, "+i},0===n.length&&(window.crypto.getRandomValues(u),n=[u[0],u[1],u[2]]),a=n,c(n),l}(Array.prototype.slice.call(arguments))}; \ No newline at end of file diff --git a/libs/d3-hexbin.v0.2.min.js b/libs/d3-hexbin.v0.2.min.js new file mode 100644 index 00000000..f15da735 --- /dev/null +++ b/libs/d3-hexbin.v0.2.min.js @@ -0,0 +1,2 @@ +// https://github.com/d3/d3-hexbin Version 0.2.2. Copyright 2017 Mike Bostock. +!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(n.d3=n.d3||{})}(this,function(n){"use strict";function t(n){return n[0]}function r(n){return n[1]}var e=Math.PI/3,u=[0,e,2*e,3*e,4*e,5*e],o=function(){function n(n){var t,r={},e=[],u=n.length;for(t=0;t1){var v=i-h,M=h+(ig*g+m*m&&(h=M+(1&s?1:-1)/2,s=x)}var y=h+"-"+s,j=r[y];j?j.push(o):(e.push(j=r[y]=[o]),j.x=(h+(1&s)/2)*a,j.y=s*f)}return e}function o(n){var t=0,r=0;return u.map(function(e){var u=Math.sin(e)*n,o=-Math.cos(e)*n,i=u-t,a=o-r;return t=u,r=o,[i,a]})}var i,a,f,c=0,s=0,h=1,l=1,d=t,p=r;return n.hexagon=function(n){return"m"+o(null==n?i:+n).join("l")+"z"},n.centers=function(){for(var n=[],t=Math.round(s/f),r=Math.round(c/a),e=t*f;e1)&&(f-=Math.floor(f));var e=Math.abs(f-.5);return Af.h=360*f-100,Af.s=1.5-1.5*e,Af.l=.8-.9*e,Af+""},f.interpolateWarm=yf,f.interpolateCool=wf,f.interpolateViridis=Bf,f.interpolateMagma=Gf,f.interpolateInferno=Pf,f.interpolatePlasma=Rf,Object.defineProperty(f,"__esModule",{value:!0})}); \ No newline at end of file diff --git a/libs/d3.min.js b/libs/d3.min.js deleted file mode 100644 index 8ed42731..00000000 --- a/libs/d3.min.js +++ /dev/null @@ -1,2 +0,0 @@ -// https://d3js.org v5.8.0 Copyright 2019 Mike Bostock -!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n(t.d3=t.d3||{})}(this,function(t){"use strict";function n(t,n){return tn?1:t>=n?0:NaN}function e(t){var e;return 1===t.length&&(e=t,t=function(t,r){return n(e(t),r)}),{left:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r>>1;t(n[o],e)<0?r=o+1:i=o}return r},right:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r>>1;t(n[o],e)>0?i=o:r=o+1}return r}}}var r=e(n),i=r.right,o=r.left;function a(t,n){return[t,n]}function u(t){return null===t?NaN:+t}function c(t,n){var e,r,i=t.length,o=0,a=-1,c=0,f=0;if(null==n)for(;++a1)return f/(o-1)}function f(t,n){var e=c(t,n);return e?Math.sqrt(e):e}function s(t,n){var e,r,i,o=t.length,a=-1;if(null==n){for(;++a=e)for(r=i=e;++ae&&(r=e),i=e)for(r=i=e;++ae&&(r=e),i0)return[t];if((r=n0)for(t=Math.ceil(t/a),n=Math.floor(n/a),o=new Array(i=Math.ceil(n-t+1));++u=0?(o>=y?10:o>=_?5:o>=b?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=y?10:o>=_?5:o>=b?2:1)}function w(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=y?i*=10:o>=_?i*=5:o>=b&&(i*=2),n=1)return+e(t[r-1],r-1,t);var r,i=(r-1)*n,o=Math.floor(i),a=+e(t[o],o,t);return a+(+e(t[o+1],o+1,t)-a)*(i-o)}}function A(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o=e)for(r=e;++or&&(r=e)}else for(;++o=e)for(r=e;++or&&(r=e);return r}function k(t){for(var n,e,r,i=t.length,o=-1,a=0;++o=0;)for(n=(r=t[i]).length;--n>=0;)e[--a]=r[n];return e}function S(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o=e)for(r=e;++oe&&(r=e)}else for(;++o=e)for(r=e;++oe&&(r=e);return r}function T(t){if(!(i=t.length))return[];for(var n=-1,e=S(t,E),r=new Array(e);++n=0&&(n=t.slice(e+1),t=t.slice(0,e)),t&&!r.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}})),a=-1,u=o.length;if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++a0)for(var e,r,i=new Array(e),o=0;o=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),V.hasOwnProperty(n)?{space:V[n],local:t}:t}function W(t){var n=$(t);return(n.local?function(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}:function(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===G&&n.documentElement.namespaceURI===G?n.createElement(t):n.createElementNS(e,t)}})(n)}function Z(){}function Q(t){return null==t?Z:function(){return this.querySelector(t)}}function J(){return[]}function K(t){return null==t?J:function(){return this.querySelectorAll(t)}}function tt(t){return function(){return this.matches(t)}}function nt(t){return new Array(t.length)}function et(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}et.prototype={constructor:et,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var rt="$";function it(t,n,e,r,i,o){for(var a,u=0,c=n.length,f=o.length;un?1:t>=n?0:NaN}function ut(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function ct(t,n){return t.style.getPropertyValue(n)||ut(t).getComputedStyle(t,null).getPropertyValue(n)}function ft(t){return t.trim().split(/^|\s+/)}function st(t){return t.classList||new lt(t)}function lt(t){this._node=t,this._names=ft(t.getAttribute("class")||"")}function ht(t,n){for(var e=st(t),r=-1,i=n.length;++r=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var wt={};(t.event=null,"undefined"!=typeof document)&&("onmouseenter"in document.documentElement||(wt={mouseenter:"mouseover",mouseleave:"mouseout"}));function Mt(t,n,e){return t=Nt(t,n,e),function(n){var e=n.relatedTarget;e&&(e===this||8&e.compareDocumentPosition(this))||t.call(this,n)}}function Nt(n,e,r){return function(i){var o=t.event;t.event=i;try{n.call(this,this.__data__,e,r)}finally{t.event=o}}}function At(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r=x&&(x=m+1);!(b=y[x])&&++x=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=at);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o1?this.each((null==n?function(t){return function(){this.style.removeProperty(t)}}:"function"==typeof n?function(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}:function(t,n,e){return function(){this.style.setProperty(t,n,e)}})(t,n,null==e?"":e)):ct(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?function(t){return function(){delete this[t]}}:"function"==typeof n?function(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}:function(t,n){return function(){this[t]=n}})(t,n)):this.node()[t]},classed:function(t,n){var e=ft(t+"");if(arguments.length<2){for(var r=st(this.node()),i=-1,o=e.length;++i=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}})}(t+""),a=o.length;if(!(arguments.length<2)){for(u=n?kt:At,null==e&&(e=!1),r=0;r>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):(n=rn.exec(t))?dn(parseInt(n[1],16)):(n=on.exec(t))?new yn(n[1],n[2],n[3],1):(n=an.exec(t))?new yn(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=un.exec(t))?pn(n[1],n[2],n[3],n[4]):(n=cn.exec(t))?pn(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=fn.exec(t))?bn(n[1],n[2]/100,n[3]/100,1):(n=sn.exec(t))?bn(n[1],n[2]/100,n[3]/100,n[4]):ln.hasOwnProperty(t)?dn(ln[t]):"transparent"===t?new yn(NaN,NaN,NaN,0):null}function dn(t){return new yn(t>>16&255,t>>8&255,255&t,1)}function pn(t,n,e,r){return r<=0&&(t=n=e=NaN),new yn(t,n,e,r)}function vn(t){return t instanceof Jt||(t=hn(t)),t?new yn((t=t.rgb()).r,t.g,t.b,t.opacity):new yn}function gn(t,n,e,r){return 1===arguments.length?vn(t):new yn(t,n,e,null==r?1:r)}function yn(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function _n(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function bn(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new xn(t,n,e,r)}function mn(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof xn)return new xn(t.h,t.s,t.l,t.opacity);if(t instanceof Jt||(t=hn(t)),!t)return new xn;if(t instanceof xn)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),a=NaN,u=o-i,c=(o+i)/2;return u?(a=n===o?(e-r)/u+6*(e0&&c<1?0:a,new xn(a,u,c,t.opacity)}(t):new xn(t,n,e,null==r?1:r)}function xn(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function wn(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}Zt(Jt,hn,{displayable:function(){return this.rgb().displayable()},hex:function(){return this.rgb().hex()},toString:function(){return this.rgb()+""}}),Zt(yn,gn,Qt(Jt,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new yn(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new yn(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return 0<=this.r&&this.r<=255&&0<=this.g&&this.g<=255&&0<=this.b&&this.b<=255&&0<=this.opacity&&this.opacity<=1},hex:function(){return"#"+_n(this.r)+_n(this.g)+_n(this.b)},toString:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}})),Zt(xn,mn,Qt(Jt,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new xn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new xn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new yn(wn(t>=240?t-240:t+120,i,r),wn(t,i,r),wn(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1}}));var Mn=Math.PI/180,Nn=180/Math.PI,An=.96422,kn=1,Sn=.82521,Tn=4/29,En=6/29,Cn=3*En*En,Pn=En*En*En;function zn(t){if(t instanceof qn)return new qn(t.l,t.a,t.b,t.opacity);if(t instanceof Fn){if(isNaN(t.h))return new qn(t.l,0,0,t.opacity);var n=t.h*Mn;return new qn(t.l,Math.cos(n)*t.c,Math.sin(n)*t.c,t.opacity)}t instanceof yn||(t=vn(t));var e,r,i=On(t.r),o=On(t.g),a=On(t.b),u=Dn((.2225045*i+.7168786*o+.0606169*a)/kn);return i===o&&o===a?e=r=u:(e=Dn((.4360747*i+.3850649*o+.1430804*a)/An),r=Dn((.0139322*i+.0971045*o+.7141733*a)/Sn)),new qn(116*u-16,500*(e-u),200*(u-r),t.opacity)}function Rn(t,n,e,r){return 1===arguments.length?zn(t):new qn(t,n,e,null==r?1:r)}function qn(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function Dn(t){return t>Pn?Math.pow(t,1/3):t/Cn+Tn}function Ln(t){return t>En?t*t*t:Cn*(t-Tn)}function Un(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function On(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Yn(t){if(t instanceof Fn)return new Fn(t.h,t.c,t.l,t.opacity);if(t instanceof qn||(t=zn(t)),0===t.a&&0===t.b)return new Fn(NaN,0,t.l,t.opacity);var n=Math.atan2(t.b,t.a)*Nn;return new Fn(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Bn(t,n,e,r){return 1===arguments.length?Yn(t):new Fn(t,n,e,null==r?1:r)}function Fn(t,n,e,r){this.h=+t,this.c=+n,this.l=+e,this.opacity=+r}Zt(qn,Rn,Qt(Jt,{brighter:function(t){return new qn(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new qn(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,n=isNaN(this.a)?t:t+this.a/500,e=isNaN(this.b)?t:t-this.b/200;return new yn(Un(3.1338561*(n=An*Ln(n))-1.6168667*(t=kn*Ln(t))-.4906146*(e=Sn*Ln(e))),Un(-.9787684*n+1.9161415*t+.033454*e),Un(.0719453*n-.2289914*t+1.4052427*e),this.opacity)}})),Zt(Fn,Bn,Qt(Jt,{brighter:function(t){return new Fn(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new Fn(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return zn(this).rgb()}}));var In=-.14861,Hn=1.78277,jn=-.29227,Xn=-.90649,Gn=1.97294,Vn=Gn*Xn,$n=Gn*Hn,Wn=Hn*jn-Xn*In;function Zn(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof Qn)return new Qn(t.h,t.s,t.l,t.opacity);t instanceof yn||(t=vn(t));var n=t.r/255,e=t.g/255,r=t.b/255,i=(Wn*r+Vn*n-$n*e)/(Wn+Vn-$n),o=r-i,a=(Gn*(e-i)-jn*o)/Xn,u=Math.sqrt(a*a+o*o)/(Gn*i*(1-i)),c=u?Math.atan2(a,o)*Nn-120:NaN;return new Qn(c<0?c+360:c,u,i,t.opacity)}(t):new Qn(t,n,e,null==r?1:r)}function Qn(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Jn(t,n,e,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*n+(4-6*o+3*a)*e+(1+3*t+3*o-3*a)*r+a*i)/6}function Kn(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,u=r180||e<-180?e-360*Math.round(e/360):e):ne(isNaN(t)?n:t)}function ie(t){return 1==(t=+t)?oe:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):ne(isNaN(n)?e:n)}}function oe(t,n){var e=n-t;return e?ee(t,e):ne(isNaN(t)?n:t)}Zt(Qn,Zn,Qt(Jt,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Qn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Qn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*Mn,n=+this.l,e=isNaN(this.s)?0:this.s*n*(1-n),r=Math.cos(t),i=Math.sin(t);return new yn(255*(n+e*(In*r+Hn*i)),255*(n+e*(jn*r+Xn*i)),255*(n+e*(Gn*r)),this.opacity)}}));var ae=function t(n){var e=ie(n);function r(t,n){var r=e((t=gn(t)).r,(n=gn(n)).r),i=e(t.g,n.g),o=e(t.b,n.b),a=oe(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=o(n),t.opacity=a(n),t+""}}return r.gamma=t,r}(1);function ue(t){return function(n){var e,r,i=n.length,o=new Array(i),a=new Array(i),u=new Array(i);for(e=0;eo&&(i=n.slice(o,i),u[a]?u[a]+=i:u[++a]=i),(e=e[0])===(r=r[0])?u[a]?u[a]+=r:u[++a]=r:(u[++a]=null,c.push({i:a,x:he(e,r)})),o=ve.lastIndex;return o180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:he(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,a.rotate,u,c),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:he(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,a.skewX,u,c),function(t,n,e,r,o,a){if(t!==e||n!==r){var u=o.push(i(o)+"scale(",null,",",null,")");a.push({i:u-4,x:he(t,e)},{i:u-2,x:he(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,u,c),o=a=null,function(t){for(var n,e=-1,r=c.length;++e=0&&n._call.call(null,t),n=n._next;--Ge}function ar(){Qe=(Ze=Ke.now())+Je,Ge=Ve=0;try{or()}finally{Ge=0,function(){var t,n,e=je,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:je=n);Xe=t,cr(r)}(),Qe=0}}function ur(){var t=Ke.now(),n=t-Ze;n>We&&(Je-=n,Ze=t)}function cr(t){Ge||(Ve&&(Ve=clearTimeout(Ve)),t-Qe>24?(t<1/0&&(Ve=setTimeout(ar,t-Ke.now()-Je)),$e&&($e=clearInterval($e))):($e||(Ze=Ke.now(),$e=setInterval(ur,We)),Ge=1,tr(ar)))}function fr(t,n,e){var r=new rr;return n=null==n?0:+n,r.restart(function(e){r.stop(),t(e+n)},n,e),r}rr.prototype=ir.prototype={constructor:rr,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?nr():+e)+(null==n?0:+n),this._next||Xe===this||(Xe?Xe._next=this:je=this,Xe=this),this._call=t,this._time=e,cr()},stop:function(){this._call&&(this._call=null,this._time=1/0,cr())}};var sr=I("start","end","cancel","interrupt"),lr=[],hr=0,dr=1,pr=2,vr=3,gr=4,yr=5,_r=6;function br(t,n,e,r,i,o){var a=t.__transition;if(a){if(e in a)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(c){var f,s,l,h;if(e.state!==dr)return u();for(f in i)if((h=i[f]).name===e.name){if(h.state===vr)return fr(o);h.state===gr?(h.state=_r,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[f]):+fhr)throw new Error("too late; already scheduled");return e}function xr(t,n){var e=wr(t,n);if(e.state>vr)throw new Error("too late; already running");return e}function wr(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function Mr(t,n){var e,r,i,o=t.__transition,a=!0;if(o){for(i in n=null==n?null:n+"",o)(e=o[i]).name===n?(r=e.state>pr&&e.state=0&&(t=t.slice(0,n)),!t||"start"===t})}(n)?mr:xr;return function(){var a=o(this,t),u=a.on;u!==r&&(i=(r=u).copy()).on(n,e),a.on=i}}(e,t,n))},attr:function(t,n){var e=$(t),r="transform"===e?Te:Ar;return this.attrTween(t,"function"==typeof n?(e.local?function(t,n,e){var r,i,o;return function(){var a,u,c=e(this);if(null!=c)return(a=this.getAttributeNS(t.space,t.local))===(u=c+"")?null:a===r&&u===i?o:(i=u,o=n(r=a,c));this.removeAttributeNS(t.space,t.local)}}:function(t,n,e){var r,i,o;return function(){var a,u,c=e(this);if(null!=c)return(a=this.getAttribute(t))===(u=c+"")?null:a===r&&u===i?o:(i=u,o=n(r=a,c));this.removeAttribute(t)}})(e,r,Nr(this,"attr."+t,n)):null==n?(e.local?function(t){return function(){this.removeAttributeNS(t.space,t.local)}}:function(t){return function(){this.removeAttribute(t)}})(e):(e.local?function(t,n,e){var r,i,o=e+"";return function(){var a=this.getAttributeNS(t.space,t.local);return a===o?null:a===r?i:i=n(r=a,e)}}:function(t,n,e){var r,i,o=e+"";return function(){var a=this.getAttribute(t);return a===o?null:a===r?i:i=n(r=a,e)}})(e,r,n))},attrTween:function(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(null==n)return this.tween(e,null);if("function"!=typeof n)throw new Error;var r=$(t);return this.tween(e,(r.local?function(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t,n){return function(e){this.setAttributeNS(t.space,t.local,n(e))}}(t,i)),e}return i._value=n,i}:function(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t,n){return function(e){this.setAttribute(t,n(e))}}(t,i)),e}return i._value=n,i})(r,n))},style:function(t,n,e){var r="transform"==(t+="")?Se:Ar;return null==n?this.styleTween(t,function(t,n){var e,r,i;return function(){var o=ct(this,t),a=(this.style.removeProperty(t),ct(this,t));return o===a?null:o===e&&a===r?i:i=n(e=o,r=a)}}(t,r)).on("end.style."+t,Sr(t)):"function"==typeof n?this.styleTween(t,function(t,n,e){var r,i,o;return function(){var a=ct(this,t),u=e(this),c=u+"";return null==u&&(this.style.removeProperty(t),c=u=ct(this,t)),a===c?null:a===r&&c===i?o:(i=c,o=n(r=a,u))}}(t,r,Nr(this,"style."+t,n))).each(function(t,n){var e,r,i,o,a="style."+n,u="end."+a;return function(){var c=xr(this,t),f=c.on,s=null==c.value[a]?o||(o=Sr(n)):void 0;f===e&&i===s||(r=(e=f).copy()).on(u,i=s),c.on=r}}(this._id,t)):this.styleTween(t,function(t,n,e){var r,i,o=e+"";return function(){var a=ct(this,t);return a===o?null:a===r?i:i=n(r=a,e)}}(t,r,n),e).on("end.style."+t,null)},styleTween:function(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==n)return this.tween(r,null);if("function"!=typeof n)throw new Error;return this.tween(r,function(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&function(t,n,e){return function(r){this.style.setProperty(t,n(r),e)}}(t,o,e)),r}return o._value=n,o}(t,n,null==e?"":e))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var n=t(this);this.textContent=null==n?"":n}}(Nr(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},remove:function(){return this.on("end.remove",(t=this._id,function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}));var t},tween:function(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r,i=wr(this.node(),e).tween,o=0,a=i.length;o0&&(r=o-p),M<0?h=d-v:M>0&&(a=u-v),x=vi,L.attr("cursor",xi.selection),Y());break;default:return}di()},!0).on("keyup.brush",function(){switch(t.event.keyCode){case 16:P&&(y=_=P=!1,Y());break;case 18:x===yi&&(w<0?s=l:w>0&&(r=o),M<0?h=d:M>0&&(a=u),x=gi,Y());break;case 32:x===vi&&(t.event.altKey?(w&&(s=l-p*w,r=o+p*w),M&&(h=d-v*M,a=u+v*M),x=yi):(w<0?s=l:w>0&&(r=o),M<0?h=d:M>0&&(a=u),x=gi),L.attr("cursor",xi[m]),Y());break;default:return}di()},!0).on("mousemove.brush",O,!0).on("mouseup.brush",B,!0);It(t.event.view)}hi(),Mr(b),c.call(b),q.start()}function O(){var t=Ot(b);!P||y||_||(Math.abs(t[0]-R[0])>Math.abs(t[1]-R[1])?_=!0:y=!0),R=t,g=!0,di(),Y()}function Y(){var t;switch(p=R[0]-z[0],v=R[1]-z[1],x){case vi:case pi:w&&(p=Math.max(S-r,Math.min(E-s,p)),o=r+p,l=s+p),M&&(v=Math.max(T-a,Math.min(C-h,v)),u=a+v,d=h+v);break;case gi:w<0?(p=Math.max(S-r,Math.min(E-r,p)),o=r+p,l=s):w>0&&(p=Math.max(S-s,Math.min(E-s,p)),o=r,l=s+p),M<0?(v=Math.max(T-a,Math.min(C-a,v)),u=a+v,d=h):M>0&&(v=Math.max(T-h,Math.min(C-h,v)),u=a,d=h+v);break;case yi:w&&(o=Math.max(S,Math.min(E,r-p*w)),l=Math.max(S,Math.min(E,s+p*w))),M&&(u=Math.max(T,Math.min(C,a-v*M)),d=Math.max(T,Math.min(C,h+v*M)))}l1e-6)if(Math.abs(s*u-c*f)>1e-6&&i){var h=e-o,d=r-a,p=u*u+c*c,v=h*h+d*d,g=Math.sqrt(p),y=Math.sqrt(l),_=i*Math.tan((Bi-Math.acos((p+l-v)/(2*g*y)))/2),b=_/y,m=_/g;Math.abs(b-1)>1e-6&&(this._+="L"+(t+b*f)+","+(n+b*s)),this._+="A"+i+","+i+",0,0,"+ +(s*h>f*d)+","+(this._x1=t+m*u)+","+(this._y1=n+m*c)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,e,r,i,o){t=+t,n=+n;var a=(e=+e)*Math.cos(r),u=e*Math.sin(r),c=t+a,f=n+u,s=1^o,l=o?r-i:i-r;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+c+","+f:(Math.abs(this._x1-c)>1e-6||Math.abs(this._y1-f)>1e-6)&&(this._+="L"+c+","+f),e&&(l<0&&(l=l%Fi+Fi),l>Ii?this._+="A"+e+","+e+",0,1,"+s+","+(t-a)+","+(n-u)+"A"+e+","+e+",0,1,"+s+","+(this._x1=c)+","+(this._y1=f):l>1e-6&&(this._+="A"+e+","+e+",0,"+ +(l>=Bi)+","+s+","+(this._x1=t+e*Math.cos(i))+","+(this._y1=n+e*Math.sin(i))))},rect:function(t,n,e,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +r+"h"+-e+"Z"},toString:function(){return this._}};function Zi(){}function Qi(t,n){var e=new Zi;if(t instanceof Zi)t.each(function(t,n){e.set(n,t)});else if(Array.isArray(t)){var r,i=-1,o=t.length;if(null==n)for(;++ir!=d>r&&e<(h-f)*(r-s)/(d-s)+f&&(i=-i)}return i}function so(t,n,e){var r,i,o,a;return function(t,n,e){return(n[0]-t[0])*(e[1]-t[1])==(e[0]-t[0])*(n[1]-t[1])}(t,n,e)&&(i=t[r=+(t[0]===n[0])],o=e[r],a=n[r],i<=o&&o<=a||a<=o&&o<=i)}function lo(){}var ho=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function po(){var t=1,n=1,e=M,r=u;function i(t){var n=e(t);if(Array.isArray(n))n=n.slice().sort(ao);else{var r=s(t),i=r[0],a=r[1];n=w(i,a,n),n=g(Math.floor(i/n)*n,Math.floor(a/n)*n,n)}return n.map(function(n){return o(t,n)})}function o(e,i){var o=[],u=[];return function(e,r,i){var o,u,c,f,s,l,h=new Array,d=new Array;o=u=-1,f=e[0]>=r,ho[f<<1].forEach(p);for(;++o=r,ho[c|f<<1].forEach(p);ho[f<<0].forEach(p);for(;++u=r,s=e[u*t]>=r,ho[f<<1|s<<2].forEach(p);++o=r,l=s,s=e[u*t+o+1]>=r,ho[c|f<<1|s<<2|l<<3].forEach(p);ho[f|s<<3].forEach(p)}o=-1,s=e[u*t]>=r,ho[s<<2].forEach(p);for(;++o=r,ho[s<<2|l<<3].forEach(p);function p(t){var n,e,r=[t[0][0]+o,t[0][1]+u],c=[t[1][0]+o,t[1][1]+u],f=a(r),s=a(c);(n=d[f])?(e=h[s])?(delete d[n.end],delete h[e.start],n===e?(n.ring.push(c),i(n.ring)):h[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete d[n.end],n.ring.push(c),d[n.end=s]=n):(n=h[s])?(e=d[f])?(delete h[n.start],delete d[e.end],n===e?(n.ring.push(c),i(n.ring)):h[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete h[n.start],n.ring.unshift(r),h[n.start=f]=n):h[f]=d[s]={start:f,end:s,ring:[r,c]}}ho[s<<3].forEach(p)}(e,i,function(t){r(t,e,i),function(t){for(var n=0,e=t.length,r=t[e-1][1]*t[0][0]-t[e-1][0]*t[0][1];++n0?o.push([t]):u.push(t)}),u.forEach(function(t){for(var n,e=0,r=o.length;e0&&a0&&u0&&o>0))throw new Error("invalid size");return t=r,n=o,i},i.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:Array.isArray(t)?uo(oo.call(t)):uo(t),i):e},i.smooth=function(t){return arguments.length?(r=t?u:lo,i):r===u},i}function vo(t,n,e){for(var r=t.width,i=t.height,o=1+(e<<1),a=0;a=e&&(u>=o&&(c-=t.data[u-o+a*r]),n.data[u-e+a*r]=c/Math.min(u+1,r-1+o-u,o))}function go(t,n,e){for(var r=t.width,i=t.height,o=1+(e<<1),a=0;a=e&&(u>=o&&(c-=t.data[a+(u-o)*r]),n.data[a+(u-e)*r]=c/Math.min(u+1,i-1+o-u,o))}function yo(t){return t[0]}function _o(t){return t[1]}function bo(){return 1}var mo={},xo={},wo=34,Mo=10,No=13;function Ao(t){return new Function("d","return {"+t.map(function(t,n){return JSON.stringify(t)+": d["+n+"]"}).join(",")+"}")}function ko(t){var n=new RegExp('["'+t+"\n\r]"),e=t.charCodeAt(0);function r(t,n){var r,i=[],o=t.length,a=0,u=0,c=o<=0,f=!1;function s(){if(c)return xo;if(f)return f=!1,mo;var n,r,i=a;if(t.charCodeAt(i)===wo){for(;a++=o?c=!0:(r=t.charCodeAt(a++))===Mo?f=!0:r===No&&(f=!0,t.charCodeAt(a)===Mo&&++a),t.slice(i+1,n-1).replace(/""/g,'"')}for(;a=(o=(v+y)/2))?v=o:y=o,(s=e>=(a=(g+_)/2))?g=a:_=a,i=d,!(d=d[l=s<<1|f]))return i[l]=p,t;if(u=+t._x.call(null,d.data),c=+t._y.call(null,d.data),n===u&&e===c)return p.next=d,i?i[l]=p:t._root=p,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(f=n>=(o=(v+y)/2))?v=o:y=o,(s=e>=(a=(g+_)/2))?g=a:_=a}while((l=s<<1|f)==(h=(c>=a)<<1|u>=o));return i[h]=d,i[l]=p,t}function Jo(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i}function Ko(t){return t[0]}function ta(t){return t[1]}function na(t,n,e){var r=new ea(null==n?Ko:n,null==e?ta:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function ea(t,n,e,r,i,o){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function ra(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var ia=na.prototype=ea.prototype;function oa(t){return t.x+t.vx}function aa(t){return t.y+t.vy}function ua(t){return t.index}function ca(t,n){var e=t.get(n);if(!e)throw new Error("missing: "+n);return e}function fa(t){return t.x}function sa(t){return t.y}ia.copy=function(){var t,n,e=new ea(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return e;if(!r.length)return e._root=ra(r),e;for(t=[{source:r,target:e._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(4)}):r.target[i]=ra(n));return e},ia.add=function(t){var n=+this._x.call(null,t),e=+this._y.call(null,t);return Qo(this.cover(n,e),n,e,t)},ia.addAll=function(t){var n,e,r,i,o=t.length,a=new Array(o),u=new Array(o),c=1/0,f=1/0,s=-1/0,l=-1/0;for(e=0;es&&(s=r),il&&(l=i));for(st||t>i||r>n||n>o))return this;var a,u,c=i-e,f=this._root;switch(u=(n<(r+o)/2)<<1|t<(e+i)/2){case 0:do{(a=new Array(4))[u]=f,f=a}while(o=r+(c*=2),t>(i=e+c)||n>o);break;case 1:do{(a=new Array(4))[u]=f,f=a}while(o=r+(c*=2),(e=i-c)>t||n>o);break;case 2:do{(a=new Array(4))[u]=f,f=a}while(r=o-(c*=2),t>(i=e+c)||r>n);break;case 3:do{(a=new Array(4))[u]=f,f=a}while(r=o-(c*=2),(e=i-c)>t||r>n)}this._root&&this._root.length&&(this._root=f)}return this._x0=e,this._y0=r,this._x1=i,this._y1=o,this},ia.data=function(){var t=[];return this.visit(function(n){if(!n.length)do{t.push(n.data)}while(n=n.next)}),t},ia.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},ia.find=function(t,n,e){var r,i,o,a,u,c,f,s=this._x0,l=this._y0,h=this._x1,d=this._y1,p=[],v=this._root;for(v&&p.push(new Jo(v,s,l,h,d)),null==e?e=1/0:(s=t-e,l=n-e,h=t+e,d=n+e,e*=e);c=p.pop();)if(!(!(v=c.node)||(i=c.x0)>h||(o=c.y0)>d||(a=c.x1)=y)<<1|t>=g)&&(c=p[p.length-1],p[p.length-1]=p[p.length-1-f],p[p.length-1-f]=c)}else{var _=t-+this._x.call(null,v.data),b=n-+this._y.call(null,v.data),m=_*_+b*b;if(m=(u=(p+g)/2))?p=u:g=u,(s=a>=(c=(v+y)/2))?v=c:y=c,n=d,!(d=d[l=s<<1|f]))return this;if(!d.length)break;(n[l+1&3]||n[l+2&3]||n[l+3&3])&&(e=n,h=l)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):n?(i?n[l]=i:delete n[l],(d=n[0]||n[1]||n[2]||n[3])&&d===(n[3]||n[2]||n[1]||n[0])&&!d.length&&(e?e[h]=d:this._root=d),this):(this._root=i,this)},ia.removeAll=function(t){for(var n=0,e=t.length;n1?r[0]+r.slice(2):r,+t.slice(e+1)]}function pa(t){return(t=da(Math.abs(t)))?t[1]:NaN}var va,ga=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function ya(t){return new _a(t)}function _a(t){if(!(n=ga.exec(t)))throw new Error("invalid format: "+t);var n;this.fill=n[1]||" ",this.align=n[2]||">",this.sign=n[3]||"-",this.symbol=n[4]||"",this.zero=!!n[5],this.width=n[6]&&+n[6],this.comma=!!n[7],this.precision=n[8]&&+n[8].slice(1),this.trim=!!n[9],this.type=n[10]||""}function ba(t,n){var e=da(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}ya.prototype=_a.prototype,_a.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(null==this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(null==this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var ma={"%":function(t,n){return(100*t).toFixed(n)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,n){return t.toExponential(n)},f:function(t,n){return t.toFixed(n)},g:function(t,n){return t.toPrecision(n)},o:function(t){return Math.round(t).toString(8)},p:function(t,n){return ba(100*t,n)},r:ba,s:function(t,n){var e=da(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(va=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+da(t,Math.max(0,n+o-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function xa(t){return t}var wa,Ma=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Na(t){var n,e,r=t.grouping&&t.thousands?(n=t.grouping,e=t.thousands,function(t,r){for(var i=t.length,o=[],a=0,u=n[0],c=0;i>0&&u>0&&(c+u+1>r&&(u=Math.max(1,r-c)),o.push(t.substring(i-=u,i+u)),!((c+=u+1)>r));)u=n[a=(a+1)%n.length];return o.reverse().join(e)}):xa,i=t.currency,o=t.decimal,a=t.numerals?function(t){return function(n){return n.replace(/[0-9]/g,function(n){return t[+n]})}}(t.numerals):xa,u=t.percent||"%";function c(t){var n=(t=ya(t)).fill,e=t.align,c=t.sign,f=t.symbol,s=t.zero,l=t.width,h=t.comma,d=t.precision,p=t.trim,v=t.type;"n"===v?(h=!0,v="g"):ma[v]||(null==d&&(d=12),p=!0,v="g"),(s||"0"===n&&"="===e)&&(s=!0,n="0",e="=");var g="$"===f?i[0]:"#"===f&&/[boxX]/.test(v)?"0"+v.toLowerCase():"",y="$"===f?i[1]:/[%p]/.test(v)?u:"",_=ma[v],b=/[defgprs%]/.test(v);function m(t){var i,u,f,m=g,x=y;if("c"===v)x=_(t)+x,t="";else{var w=(t=+t)<0;if(t=_(Math.abs(t),d),p&&(t=function(t){t:for(var n,e=t.length,r=1,i=-1;r0){if(!+t[r])break t;i=0}}return i>0?t.slice(0,i)+t.slice(n+1):t}(t)),w&&0==+t&&(w=!1),m=(w?"("===c?c:"-":"-"===c||"("===c?"":c)+m,x=("s"===v?Ma[8+va/3]:"")+x+(w&&"("===c?")":""),b)for(i=-1,u=t.length;++i(f=t.charCodeAt(i))||f>57){x=(46===f?o+t.slice(i+1):t.slice(i))+x,t=t.slice(0,i);break}}h&&!s&&(t=r(t,1/0));var M=m.length+t.length+x.length,N=M>1)+m+t+x+N.slice(M);break;default:t=N+m+t+x}return a(t)}return d=null==d?6:/[gprs]/.test(v)?Math.max(1,Math.min(21,d)):Math.max(0,Math.min(20,d)),m.toString=function(){return t+""},m}return{format:c,formatPrefix:function(t,n){var e=c(((t=ya(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(pa(n)/3))),i=Math.pow(10,-r),o=Ma[8+r/3];return function(t){return e(i*t)+o}}}}function Aa(n){return wa=Na(n),t.format=wa.format,t.formatPrefix=wa.formatPrefix,wa}function ka(t){return Math.max(0,-pa(Math.abs(t)))}function Sa(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(pa(n)/3)))-pa(Math.abs(t)))}function Ta(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,pa(n)-pa(t))+1}function Ea(){return new Ca}function Ca(){this.reset()}Aa({decimal:".",thousands:",",grouping:[3],currency:["$",""]}),Ca.prototype={constructor:Ca,reset:function(){this.s=this.t=0},add:function(t){za(Pa,t,this.t),za(this,Pa.s,this.s),this.s?this.t+=Pa.t:this.s=Pa.t},valueOf:function(){return this.s}};var Pa=new Ca;function za(t,n,e){var r=t.s=n+e,i=r-n,o=r-i;t.t=n-o+(e-i)}var Ra=1e-6,qa=1e-12,Da=Math.PI,La=Da/2,Ua=Da/4,Oa=2*Da,Ya=180/Da,Ba=Da/180,Fa=Math.abs,Ia=Math.atan,Ha=Math.atan2,ja=Math.cos,Xa=Math.ceil,Ga=Math.exp,Va=Math.log,$a=Math.pow,Wa=Math.sin,Za=Math.sign||function(t){return t>0?1:t<0?-1:0},Qa=Math.sqrt,Ja=Math.tan;function Ka(t){return t>1?0:t<-1?Da:Math.acos(t)}function tu(t){return t>1?La:t<-1?-La:Math.asin(t)}function nu(t){return(t=Wa(t/2))*t}function eu(){}function ru(t,n){t&&ou.hasOwnProperty(t.type)&&ou[t.type](t,n)}var iu={Feature:function(t,n){ru(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r=0?1:-1,i=r*e,o=ja(n=(n*=Ba)/2+Ua),a=Wa(n),u=du*a,c=hu*o+u*ja(i),f=u*r*Wa(i);pu.add(Ha(f,c)),lu=t,hu=o,du=a}function xu(t){return[Ha(t[1],t[0]),tu(t[2])]}function wu(t){var n=t[0],e=t[1],r=ja(e);return[r*ja(n),r*Wa(n),Wa(e)]}function Mu(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function Nu(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function Au(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function ku(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function Su(t){var n=Qa(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}var Tu,Eu,Cu,Pu,zu,Ru,qu,Du,Lu,Uu,Ou,Yu,Bu,Fu,Iu,Hu,ju,Xu,Gu,Vu,$u,Wu,Zu,Qu,Ju,Ku,tc=Ea(),nc={point:ec,lineStart:ic,lineEnd:oc,polygonStart:function(){nc.point=ac,nc.lineStart=uc,nc.lineEnd=cc,tc.reset(),gu.polygonStart()},polygonEnd:function(){gu.polygonEnd(),nc.point=ec,nc.lineStart=ic,nc.lineEnd=oc,pu<0?(Tu=-(Cu=180),Eu=-(Pu=90)):tc>Ra?Pu=90:tc<-Ra&&(Eu=-90),Uu[0]=Tu,Uu[1]=Cu}};function ec(t,n){Lu.push(Uu=[Tu=t,Cu=t]),nPu&&(Pu=n)}function rc(t,n){var e=wu([t*Ba,n*Ba]);if(Du){var r=Nu(Du,e),i=Nu([r[1],-r[0],0],r);Su(i),i=xu(i);var o,a=t-zu,u=a>0?1:-1,c=i[0]*Ya*u,f=Fa(a)>180;f^(u*zuPu&&(Pu=o):f^(u*zu<(c=(c+360)%360-180)&&cPu&&(Pu=n)),f?tfc(Tu,Cu)&&(Cu=t):fc(t,Cu)>fc(Tu,Cu)&&(Tu=t):Cu>=Tu?(tCu&&(Cu=t)):t>zu?fc(Tu,t)>fc(Tu,Cu)&&(Cu=t):fc(t,Cu)>fc(Tu,Cu)&&(Tu=t)}else Lu.push(Uu=[Tu=t,Cu=t]);nPu&&(Pu=n),Du=e,zu=t}function ic(){nc.point=rc}function oc(){Uu[0]=Tu,Uu[1]=Cu,nc.point=ec,Du=null}function ac(t,n){if(Du){var e=t-zu;tc.add(Fa(e)>180?e+(e>0?360:-360):e)}else Ru=t,qu=n;gu.point(t,n),rc(t,n)}function uc(){gu.lineStart()}function cc(){ac(Ru,qu),gu.lineEnd(),Fa(tc)>Ra&&(Tu=-(Cu=180)),Uu[0]=Tu,Uu[1]=Cu,Du=null}function fc(t,n){return(n-=t)<0?n+360:n}function sc(t,n){return t[0]-n[0]}function lc(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nDa?t+Math.round(-t/Oa)*Oa:t,n]}function kc(t,n,e){return(t%=Oa)?n||e?Nc(Tc(t),Ec(n,e)):Tc(t):n||e?Ec(n,e):Ac}function Sc(t){return function(n,e){return[(n+=t)>Da?n-Oa:n<-Da?n+Oa:n,e]}}function Tc(t){var n=Sc(t);return n.invert=Sc(-t),n}function Ec(t,n){var e=ja(t),r=Wa(t),i=ja(n),o=Wa(n);function a(t,n){var a=ja(n),u=ja(t)*a,c=Wa(t)*a,f=Wa(n),s=f*e+u*r;return[Ha(c*i-s*o,u*e-f*r),tu(s*i+c*o)]}return a.invert=function(t,n){var a=ja(n),u=ja(t)*a,c=Wa(t)*a,f=Wa(n),s=f*i-c*o;return[Ha(c*i+f*o,u*e+s*r),tu(s*e-u*r)]},a}function Cc(t){function n(n){return(n=t(n[0]*Ba,n[1]*Ba))[0]*=Ya,n[1]*=Ya,n}return t=kc(t[0]*Ba,t[1]*Ba,t.length>2?t[2]*Ba:0),n.invert=function(n){return(n=t.invert(n[0]*Ba,n[1]*Ba))[0]*=Ya,n[1]*=Ya,n},n}function Pc(t,n,e,r,i,o){if(e){var a=ja(n),u=Wa(n),c=r*e;null==i?(i=n+r*Oa,o=n-c/2):(i=zc(a,i),o=zc(a,o),(r>0?io)&&(i+=r*Oa));for(var f,s=i;r>0?s>o:s1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function qc(t,n){return Fa(t[0]-n[0])=0;--o)i.point((s=f[o])[0],s[1]);else r(h.x,h.p.x,-1,i);h=h.p}f=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}}function Uc(t){if(n=t.length){for(var n,e,r=0,i=t[0];++r=0?1:-1,A=N*M,k=A>Da,S=v*x;if(Oc.add(Ha(S*N*Wa(A),g*w+S*ja(A))),a+=k?M+N*Oa:M,k^d>=e^b>=e){var T=Nu(wu(h),wu(_));Su(T);var E=Nu(o,T);Su(E);var C=(k^M>=0?-1:1)*tu(E[2]);(r>C||r===C&&(T[0]||T[1]))&&(u+=k^M>=0?1:-1)}}return(a<-Ra||a0){for(l||(i.polygonStart(),l=!0),i.lineStart(),t=0;t1&&2&c&&h.push(h.pop().concat(h.shift())),a.push(h.filter(Fc))}return h}}function Fc(t){return t.length>1}function Ic(t,n){return((t=t.x)[0]<0?t[1]-La-Ra:La-t[1])-((n=n.x)[0]<0?n[1]-La-Ra:La-n[1])}var Hc=Bc(function(){return!0},function(t){var n,e=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(o,a){var u=o>0?Da:-Da,c=Fa(o-e);Fa(c-Da)0?La:-La),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),t.point(o,r),n=0):i!==u&&c>=Da&&(Fa(e-i)Ra?Ia((Wa(n)*(o=ja(r))*Wa(e)-Wa(r)*(i=ja(n))*Wa(t))/(i*o*a)):(n+r)/2}(e,r,o,a),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),n=0),t.point(e=o,r=a),i=u},lineEnd:function(){t.lineEnd(),e=r=NaN},clean:function(){return 2-n}}},function(t,n,e,r){var i;if(null==t)i=e*La,r.point(-Da,i),r.point(0,i),r.point(Da,i),r.point(Da,0),r.point(Da,-i),r.point(0,-i),r.point(-Da,-i),r.point(-Da,0),r.point(-Da,i);else if(Fa(t[0]-n[0])>Ra){var o=t[0]0,i=Fa(n)>Ra;function o(t,e){return ja(t)*ja(e)>n}function a(t,e,r){var i=[1,0,0],o=Nu(wu(t),wu(e)),a=Mu(o,o),u=o[0],c=a-u*u;if(!c)return!r&&t;var f=n*a/c,s=-n*u/c,l=Nu(i,o),h=ku(i,f);Au(h,ku(o,s));var d=l,p=Mu(h,d),v=Mu(d,d),g=p*p-v*(Mu(h,h)-1);if(!(g<0)){var y=Qa(g),_=ku(d,(-p-y)/v);if(Au(_,h),_=xu(_),!r)return _;var b,m=t[0],x=e[0],w=t[1],M=e[1];x0^_[1]<(Fa(_[0]-m)Da^(m<=_[0]&&_[0]<=x)){var k=ku(d,(-p+y)/v);return Au(k,h),[_,xu(k)]}}}function u(n,e){var i=r?t:Da-t,o=0;return n<-i?o|=1:n>i&&(o|=2),e<-i?o|=4:e>i&&(o|=8),o}return Bc(o,function(t){var n,e,c,f,s;return{lineStart:function(){f=c=!1,s=1},point:function(l,h){var d,p=[l,h],v=o(l,h),g=r?v?0:u(l,h):v?u(l+(l<0?Da:-Da),h):0;if(!n&&(f=c=v)&&t.lineStart(),v!==c&&(!(d=a(n,p))||qc(n,d)||qc(p,d))&&(p[0]+=Ra,p[1]+=Ra,v=o(p[0],p[1])),v!==c)s=0,v?(t.lineStart(),d=a(p,n),t.point(d[0],d[1])):(d=a(n,p),t.point(d[0],d[1]),t.lineEnd()),n=d;else if(i&&n&&r^v){var y;g&e||!(y=a(p,n,!0))||(s=0,r?(t.lineStart(),t.point(y[0][0],y[0][1]),t.point(y[1][0],y[1][1]),t.lineEnd()):(t.point(y[1][0],y[1][1]),t.lineEnd(),t.lineStart(),t.point(y[0][0],y[0][1])))}!v||n&&qc(n,p)||t.point(p[0],p[1]),n=p,c=v,e=g},lineEnd:function(){c&&t.lineEnd(),n=null},clean:function(){return s|(f&&c)<<1}}},function(n,r,i,o){Pc(o,t,e,i,n,r)},r?[0,-t]:[-Da,t-Da])}var Xc=1e9,Gc=-Xc;function Vc(t,n,e,r){function i(i,o){return t<=i&&i<=e&&n<=o&&o<=r}function o(i,o,u,f){var s=0,l=0;if(null==i||(s=a(i,u))!==(l=a(o,u))||c(i,o)<0^u>0)do{f.point(0===s||3===s?t:e,s>1?r:n)}while((s=(s+u+4)%4)!==l);else f.point(o[0],o[1])}function a(r,i){return Fa(r[0]-t)0?0:3:Fa(r[0]-e)0?2:1:Fa(r[1]-n)0?1:0:i>0?3:2}function u(t,n){return c(t.x,n.x)}function c(t,n){var e=a(t,1),r=a(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}return function(a){var c,f,s,l,h,d,p,v,g,y,_,b=a,m=Rc(),x={point:w,lineStart:function(){x.point=M,f&&f.push(s=[]);y=!0,g=!1,p=v=NaN},lineEnd:function(){c&&(M(l,h),d&&g&&m.rejoin(),c.push(m.result()));x.point=w,g&&b.lineEnd()},polygonStart:function(){b=m,c=[],f=[],_=!0},polygonEnd:function(){var n=function(){for(var n=0,e=0,i=f.length;er&&(h-o)*(r-a)>(d-a)*(t-o)&&++n:d<=r&&(h-o)*(r-a)<(d-a)*(t-o)&&--n;return n}(),e=_&&n,i=(c=k(c)).length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),o(null,null,1,a),a.lineEnd()),i&&Lc(c,u,n,o,a),a.polygonEnd());b=a,c=f=s=null}};function w(t,n){i(t,n)&&b.point(t,n)}function M(o,a){var u=i(o,a);if(f&&s.push([o,a]),y)l=o,h=a,d=u,y=!1,u&&(b.lineStart(),b.point(o,a));else if(u&&g)b.point(o,a);else{var c=[p=Math.max(Gc,Math.min(Xc,p)),v=Math.max(Gc,Math.min(Xc,v))],m=[o=Math.max(Gc,Math.min(Xc,o)),a=Math.max(Gc,Math.min(Xc,a))];!function(t,n,e,r,i,o){var a,u=t[0],c=t[1],f=0,s=1,l=n[0]-u,h=n[1]-c;if(a=e-u,l||!(a>0)){if(a/=l,l<0){if(a0){if(a>s)return;a>f&&(f=a)}if(a=i-u,l||!(a<0)){if(a/=l,l<0){if(a>s)return;a>f&&(f=a)}else if(l>0){if(a0)){if(a/=h,h<0){if(a0){if(a>s)return;a>f&&(f=a)}if(a=o-c,h||!(a<0)){if(a/=h,h<0){if(a>s)return;a>f&&(f=a)}else if(h>0){if(a0&&(t[0]=u+f*l,t[1]=c+f*h),s<1&&(n[0]=u+s*l,n[1]=c+s*h),!0}}}}}(c,m,t,n,e,r)?u&&(b.lineStart(),b.point(o,a),_=!1):(g||(b.lineStart(),b.point(c[0],c[1])),b.point(m[0],m[1]),u||b.lineEnd(),_=!1)}p=o,v=a,g=u}return x}}var $c,Wc,Zc,Qc=Ea(),Jc={sphere:eu,point:eu,lineStart:function(){Jc.point=tf,Jc.lineEnd=Kc},lineEnd:eu,polygonStart:eu,polygonEnd:eu};function Kc(){Jc.point=Jc.lineEnd=eu}function tf(t,n){$c=t*=Ba,Wc=Wa(n*=Ba),Zc=ja(n),Jc.point=nf}function nf(t,n){t*=Ba;var e=Wa(n*=Ba),r=ja(n),i=Fa(t-$c),o=ja(i),a=r*Wa(i),u=Zc*e-Wc*r*o,c=Wc*e+Zc*r*o;Qc.add(Ha(Qa(a*a+u*u),c)),$c=t,Wc=e,Zc=r}function ef(t){return Qc.reset(),cu(t,Jc),+Qc}var rf=[null,null],of={type:"LineString",coordinates:rf};function af(t,n){return rf[0]=t,rf[1]=n,ef(of)}var uf={Feature:function(t,n){return ff(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++rRa}).map(c)).concat(g(Xa(o/d)*d,i,d).filter(function(t){return Fa(t%v)>Ra}).map(f))}return _.lines=function(){return b().map(function(t){return{type:"LineString",coordinates:t}})},_.outline=function(){return{type:"Polygon",coordinates:[s(r).concat(l(a).slice(1),s(e).reverse().slice(1),l(u).reverse().slice(1))]}},_.extent=function(t){return arguments.length?_.extentMajor(t).extentMinor(t):_.extentMinor()},_.extentMajor=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],u=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),u>a&&(t=u,u=a,a=t),_.precision(y)):[[r,u],[e,a]]},_.extentMinor=function(e){return arguments.length?(n=+e[0][0],t=+e[1][0],o=+e[0][1],i=+e[1][1],n>t&&(e=n,n=t,t=e),o>i&&(e=o,o=i,i=e),_.precision(y)):[[n,o],[t,i]]},_.step=function(t){return arguments.length?_.stepMajor(t).stepMinor(t):_.stepMinor()},_.stepMajor=function(t){return arguments.length?(p=+t[0],v=+t[1],_):[p,v]},_.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],_):[h,d]},_.precision=function(h){return arguments.length?(y=+h,c=vf(o,i,90),f=gf(n,t,y),s=vf(u,a,90),l=gf(r,e,y),_):y},_.extentMajor([[-180,-90+Ra],[180,90-Ra]]).extentMinor([[-180,-80-Ra],[180,80+Ra]])}function _f(t){return t}var bf,mf,xf,wf,Mf=Ea(),Nf=Ea(),Af={point:eu,lineStart:eu,lineEnd:eu,polygonStart:function(){Af.lineStart=kf,Af.lineEnd=Ef},polygonEnd:function(){Af.lineStart=Af.lineEnd=Af.point=eu,Mf.add(Fa(Nf)),Nf.reset()},result:function(){var t=Mf/2;return Mf.reset(),t}};function kf(){Af.point=Sf}function Sf(t,n){Af.point=Tf,bf=xf=t,mf=wf=n}function Tf(t,n){Nf.add(wf*t-xf*n),xf=t,wf=n}function Ef(){Tf(bf,mf)}var Cf=1/0,Pf=Cf,zf=-Cf,Rf=zf,qf={point:function(t,n){tzf&&(zf=t);nRf&&(Rf=n)},lineStart:eu,lineEnd:eu,polygonStart:eu,polygonEnd:eu,result:function(){var t=[[Cf,Pf],[zf,Rf]];return zf=Rf=-(Pf=Cf=1/0),t}};var Df,Lf,Uf,Of,Yf=0,Bf=0,Ff=0,If=0,Hf=0,jf=0,Xf=0,Gf=0,Vf=0,$f={point:Wf,lineStart:Zf,lineEnd:Kf,polygonStart:function(){$f.lineStart=ts,$f.lineEnd=ns},polygonEnd:function(){$f.point=Wf,$f.lineStart=Zf,$f.lineEnd=Kf},result:function(){var t=Vf?[Xf/Vf,Gf/Vf]:jf?[If/jf,Hf/jf]:Ff?[Yf/Ff,Bf/Ff]:[NaN,NaN];return Yf=Bf=Ff=If=Hf=jf=Xf=Gf=Vf=0,t}};function Wf(t,n){Yf+=t,Bf+=n,++Ff}function Zf(){$f.point=Qf}function Qf(t,n){$f.point=Jf,Wf(Uf=t,Of=n)}function Jf(t,n){var e=t-Uf,r=n-Of,i=Qa(e*e+r*r);If+=i*(Uf+t)/2,Hf+=i*(Of+n)/2,jf+=i,Wf(Uf=t,Of=n)}function Kf(){$f.point=Wf}function ts(){$f.point=es}function ns(){rs(Df,Lf)}function es(t,n){$f.point=rs,Wf(Df=Uf=t,Lf=Of=n)}function rs(t,n){var e=t-Uf,r=n-Of,i=Qa(e*e+r*r);If+=i*(Uf+t)/2,Hf+=i*(Of+n)/2,jf+=i,Xf+=(i=Of*t-Uf*n)*(Uf+t),Gf+=i*(Of+n),Vf+=3*i,Wf(Uf=t,Of=n)}function is(t){this._context=t}is.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._context.moveTo(t,n),this._point=1;break;case 1:this._context.lineTo(t,n);break;default:this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,Oa)}},result:eu};var os,as,us,cs,fs,ss=Ea(),ls={point:eu,lineStart:function(){ls.point=hs},lineEnd:function(){os&&ds(as,us),ls.point=eu},polygonStart:function(){os=!0},polygonEnd:function(){os=null},result:function(){var t=+ss;return ss.reset(),t}};function hs(t,n){ls.point=ds,as=cs=t,us=fs=n}function ds(t,n){cs-=t,fs-=n,ss.add(Qa(cs*cs+fs*fs)),cs=t,fs=n}function ps(){this._string=[]}function vs(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function gs(t){return function(n){var e=new ys;for(var r in t)e[r]=t[r];return e.stream=n,e}}function ys(){}function _s(t,n,e){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),cu(e,t.stream(qf)),n(qf.result()),null!=r&&t.clipExtent(r),t}function bs(t,n,e){return _s(t,function(e){var r=n[1][0]-n[0][0],i=n[1][1]-n[0][1],o=Math.min(r/(e[1][0]-e[0][0]),i/(e[1][1]-e[0][1])),a=+n[0][0]+(r-o*(e[1][0]+e[0][0]))/2,u=+n[0][1]+(i-o*(e[1][1]+e[0][1]))/2;t.scale(150*o).translate([a,u])},e)}function ms(t,n,e){return bs(t,[[0,0],n],e)}function xs(t,n,e){return _s(t,function(e){var r=+n,i=r/(e[1][0]-e[0][0]),o=(r-i*(e[1][0]+e[0][0]))/2,a=-i*e[0][1];t.scale(150*i).translate([o,a])},e)}function ws(t,n,e){return _s(t,function(e){var r=+n,i=r/(e[1][1]-e[0][1]),o=-i*e[0][0],a=(r-i*(e[1][1]+e[0][1]))/2;t.scale(150*i).translate([o,a])},e)}ps.prototype={_radius:4.5,_circle:vs(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._string.push("M",t,",",n),this._point=1;break;case 1:this._string.push("L",t,",",n);break;default:null==this._circle&&(this._circle=vs(this._radius)),this._string.push("M",t,",",n,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}},ys.prototype={constructor:ys,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var Ms=16,Ns=ja(30*Ba);function As(t,n){return+n?function(t,n){function e(r,i,o,a,u,c,f,s,l,h,d,p,v,g){var y=f-r,_=s-i,b=y*y+_*_;if(b>4*n&&v--){var m=a+h,x=u+d,w=c+p,M=Qa(m*m+x*x+w*w),N=tu(w/=M),A=Fa(Fa(w)-1)n||Fa((y*E+_*C)/b-.5)>.3||a*h+u*d+c*p2?t[2]%360*Ba:0,S()):[g*Ya,y*Ya,_*Ya]},A.angle=function(t){return arguments.length?(b=t%360*Ba,S()):b*Ya},A.precision=function(t){return arguments.length?(a=As(u,N=t*t),T()):Qa(N)},A.fitExtent=function(t,n){return bs(A,t,n)},A.fitSize=function(t,n){return ms(A,t,n)},A.fitWidth=function(t,n){return xs(A,t,n)},A.fitHeight=function(t,n){return ws(A,t,n)},function(){return n=t.apply(this,arguments),A.invert=n.invert&&k,S()}}function Cs(t){var n=0,e=Da/3,r=Es(t),i=r(n,e);return i.parallels=function(t){return arguments.length?r(n=t[0]*Ba,e=t[1]*Ba):[n*Ya,e*Ya]},i}function Ps(t,n){var e=Wa(t),r=(e+Wa(n))/2;if(Fa(r)0?n<-La+Ra&&(n=-La+Ra):n>La-Ra&&(n=La-Ra);var e=i/$a(Bs(n),r);return[e*Wa(r*t),i-e*ja(r*t)]}return o.invert=function(t,n){var e=i-n,o=Za(r)*Qa(t*t+e*e);return[Ha(t,Fa(e))/r*Za(e),2*Ia($a(i/o,1/r))-La]},o}function Is(t,n){return[t,n]}function Hs(t,n){var e=ja(t),r=t===n?Wa(t):(e-ja(n))/(n-t),i=e/r+t;if(Fa(r)=0;)n+=e[r].value;else n=1;t.value=n}function al(t,n){var e,r,i,o,a,u=new sl(t),c=+t.value&&(u.value=t.value),f=[u];for(null==n&&(n=ul);e=f.pop();)if(c&&(e.value=+e.data.value),(i=n(e.data))&&(a=i.length))for(e.children=new Array(a),o=a-1;o>=0;--o)f.push(r=e.children[o]=new sl(i[o])),r.parent=e,r.depth=e.depth+1;return u.eachBefore(fl)}function ul(t){return t.children}function cl(t){t.data=t.data.data}function fl(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function sl(t){this.data=t,this.depth=this.height=0,this.parent=null}Ws.invert=function(t,n){for(var e,r=n,i=r*r,o=i*i*i,a=0;a<12&&(o=(i=(r-=e=(r*(js+Xs*i+o*(Gs+Vs*i))-n)/(js+3*Xs*i+o*(7*Gs+9*Vs*i)))*r)*i*i,!(Fa(e)Ra&&--i>0);return[t/(.8707+(o=r*r)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),r]},Ks.invert=Ds(tu),tl.invert=Ds(function(t){return 2*Ia(t)}),nl.invert=function(t,n){return[-n,2*Ia(Ga(t))-La]},sl.prototype=al.prototype={constructor:sl,count:function(){return this.eachAfter(ol)},each:function(t){var n,e,r,i,o=this,a=[o];do{for(n=a.reverse(),a=[];o=n.pop();)if(t(o),e=o.children)for(r=0,i=e.length;r=0;--e)i.push(n[e]);return this},sum:function(t){return this.eachAfter(function(n){for(var e=+t(n.data)||0,r=n.children,i=r&&r.length;--i>=0;)e+=r[i].value;n.value=e})},sort:function(t){return this.eachBefore(function(n){n.children&&n.children.sort(t)})},path:function(t){for(var n=this,e=function(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;for(t=e.pop(),n=r.pop();t===n;)i=t,t=e.pop(),n=r.pop();return i}(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},descendants:function(){var t=[];return this.each(function(n){t.push(n)}),t},leaves:function(){var t=[];return this.eachBefore(function(n){n.children||t.push(n)}),t},links:function(){var t=this,n=[];return t.each(function(e){e!==t&&n.push({source:e.parent,target:e})}),n},copy:function(){return al(this).eachBefore(cl)}};var ll=Array.prototype.slice;function hl(t){for(var n,e,r=0,i=(t=function(t){for(var n,e,r=t.length;r;)e=Math.random()*r--|0,n=t[r],t[r]=t[e],t[e]=n;return t}(ll.call(t))).length,o=[];r0&&e*e>r*r+i*i}function gl(t,n){for(var e=0;e(a*=a)?(r=(f+a-i)/(2*f),o=Math.sqrt(Math.max(0,a/f-r*r)),e.x=t.x-r*u-o*c,e.y=t.y-r*c+o*u):(r=(f+i-a)/(2*f),o=Math.sqrt(Math.max(0,i/f-r*r)),e.x=n.x+r*u-o*c,e.y=n.y+r*c+o*u)):(e.x=n.x+e.r,e.y=n.y)}function xl(t,n){var e=t.r+n.r-1e-6,r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function wl(t){var n=t._,e=t.next._,r=n.r+e.r,i=(n.x*e.r+e.x*n.r)/r,o=(n.y*e.r+e.y*n.r)/r;return i*i+o*o}function Ml(t){this._=t,this.next=null,this.previous=null}function Nl(t){if(!(i=t.length))return 0;var n,e,r,i,o,a,u,c,f,s,l;if((n=t[0]).x=0,n.y=0,!(i>1))return n.r;if(e=t[1],n.x=-e.r,e.x=n.r,e.y=0,!(i>2))return n.r+e.r;ml(e,n,r=t[2]),n=new Ml(n),e=new Ml(e),r=new Ml(r),n.next=r.previous=e,e.next=n.previous=r,r.next=e.previous=n;t:for(u=3;uh&&(h=u),g=s*s*v,(d=Math.max(h/g,g/l))>p){s-=u;break}p=d}y.push(a={value:s,dice:c1?n:1)},e}(Gl);var Wl=function t(n){function e(t,e,r,i,o){if((a=t._squarify)&&a.ratio===n)for(var a,u,c,f,s,l=-1,h=a.length,d=t.value;++l1?n:1)},e}(Gl);function Zl(t,n){return t[0]-n[0]||t[1]-n[1]}function Ql(t){for(var n,e,r,i=t.length,o=[0,1],a=2,u=2;u1&&(n=t[o[a-2]],e=t[o[a-1]],r=t[u],(e[0]-n[0])*(r[1]-n[1])-(e[1]-n[1])*(r[0]-n[0])<=0);)--a;o[a++]=u}return o.slice(0,a)}function Jl(){return Math.random()}var Kl=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,1===arguments.length?(e=t,t=0):e-=t,function(){return n()*e+t}}return e.source=t,e}(Jl),th=function t(n){function e(t,e){var r,i;return t=null==t?0:+t,e=null==e?1:+e,function(){var o;if(null!=r)o=r,r=null;else do{r=2*n()-1,o=2*n()-1,i=r*r+o*o}while(!i||i>1);return t+e*o*Math.sqrt(-2*Math.log(i)/i)}}return e.source=t,e}(Jl),nh=function t(n){function e(){var t=th.source(n).apply(this,arguments);return function(){return Math.exp(t())}}return e.source=t,e}(Jl),eh=function t(n){function e(t){return function(){for(var e=0,r=0;rr&&(n=e,e=r,r=n),function(t){return Math.max(e,Math.min(r,t))}}function _h(t,n,e){var r=t[0],i=t[1],o=n[0],a=n[1];return i2?bh:_h,i=o=null,l}function l(n){return isNaN(n=+n)?e:(i||(i=r(a.map(t),u,c)))(t(f(n)))}return l.invert=function(e){return f(n((o||(o=r(u,a.map(t),he)))(e)))},l.domain=function(t){return arguments.length?(a=ch.call(t,dh),f===vh||(f=yh(a)),s()):a.slice()},l.range=function(t){return arguments.length?(u=fh.call(t),s()):u.slice()},l.rangeRound=function(t){return u=fh.call(t),c=_e,s()},l.clamp=function(t){return arguments.length?(f=t?yh(a):vh,l):f!==vh},l.interpolate=function(t){return arguments.length?(c=t,s()):c},l.unknown=function(t){return arguments.length?(e=t,l):e},function(e,r){return t=e,n=r,s()}}function wh(t,n){return xh()(t,n)}function Mh(n,e,r,i){var o,a=w(n,e,r);switch((i=ya(null==i?",f":i)).type){case"s":var u=Math.max(Math.abs(n),Math.abs(e));return null!=i.precision||isNaN(o=Sa(a,u))||(i.precision=o),t.formatPrefix(i,u);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(o=Ta(a,Math.max(Math.abs(n),Math.abs(e))))||(i.precision=o-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(o=ka(a))||(i.precision=o-2*("%"===i.type))}return t.format(i)}function Nh(t){var n=t.domain;return t.ticks=function(t){var e=n();return m(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){var r=n();return Mh(r[0],r[r.length-1],null==t?10:t,e)},t.nice=function(e){null==e&&(e=10);var r,i=n(),o=0,a=i.length-1,u=i[o],c=i[a];return c0?r=x(u=Math.floor(u/r)*r,c=Math.ceil(c/r)*r,e):r<0&&(r=x(u=Math.ceil(u*r)/r,c=Math.floor(c*r)/r,e)),r>0?(i[o]=Math.floor(u/r)*r,i[a]=Math.ceil(c/r)*r,n(i)):r<0&&(i[o]=Math.ceil(u*r)/r,i[a]=Math.floor(c*r)/r,n(i)),t},t}function Ah(t,n){var e,r=0,i=(t=t.slice()).length-1,o=t[r],a=t[i];return a0){for(;hc)break;v.push(l)}}else for(;h=1;--s)if(!((l=f*s)c)break;v.push(l)}}else v=m(h,d,Math.min(d-h,p)).map(r);return n?v.reverse():v},i.tickFormat=function(n,o){if(null==o&&(o=10===a?".0e":","),"function"!=typeof o&&(o=t.format(o)),n===1/0)return o;null==n&&(n=10);var u=Math.max(1,a*n/i.ticks().length);return function(t){var n=t/r(Math.round(e(t)));return n*a0))return u;do{u.push(a=new Date(+e)),n(e,o),t(e)}while(a=n)for(;t(n),!e(n);)n.setTime(n-1)},function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;n(t,-1),!e(t););else for(;--r>=0;)for(;n(t,1),!e(t););})},e&&(i.count=function(n,r){return Fh.setTime(+n),Ih.setTime(+r),t(Fh),t(Ih),Math.floor(e(Fh,Ih))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(n){return r(n)%t==0}:function(n){return i.count(0,n)%t==0}):i:null}),i}var jh=Hh(function(){},function(t,n){t.setTime(+t+n)},function(t,n){return n-t});jh.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Hh(function(n){n.setTime(Math.floor(n/t)*t)},function(n,e){n.setTime(+n+e*t)},function(n,e){return(e-n)/t}):jh:null};var Xh=jh.range,Gh=6e4,Vh=6048e5,$h=Hh(function(t){t.setTime(1e3*Math.floor(t/1e3))},function(t,n){t.setTime(+t+1e3*n)},function(t,n){return(n-t)/1e3},function(t){return t.getUTCSeconds()}),Wh=$h.range,Zh=Hh(function(t){t.setTime(Math.floor(t/Gh)*Gh)},function(t,n){t.setTime(+t+n*Gh)},function(t,n){return(n-t)/Gh},function(t){return t.getMinutes()}),Qh=Zh.range,Jh=Hh(function(t){var n=t.getTimezoneOffset()*Gh%36e5;n<0&&(n+=36e5),t.setTime(36e5*Math.floor((+t-n)/36e5)+n)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getHours()}),Kh=Jh.range,td=Hh(function(t){t.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Gh)/864e5},function(t){return t.getDate()-1}),nd=td.range;function ed(t){return Hh(function(n){n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+7*n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Gh)/Vh})}var rd=ed(0),id=ed(1),od=ed(2),ad=ed(3),ud=ed(4),cd=ed(5),fd=ed(6),sd=rd.range,ld=id.range,hd=od.range,dd=ad.range,pd=ud.range,vd=cd.range,gd=fd.range,yd=Hh(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,n){t.setMonth(t.getMonth()+n)},function(t,n){return n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())},function(t){return t.getMonth()}),_d=yd.range,bd=Hh(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,n){t.setFullYear(t.getFullYear()+n)},function(t,n){return n.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});bd.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Hh(function(n){n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)},function(n,e){n.setFullYear(n.getFullYear()+e*t)}):null};var md=bd.range,xd=Hh(function(t){t.setUTCSeconds(0,0)},function(t,n){t.setTime(+t+n*Gh)},function(t,n){return(n-t)/Gh},function(t){return t.getUTCMinutes()}),wd=xd.range,Md=Hh(function(t){t.setUTCMinutes(0,0,0)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getUTCHours()}),Nd=Md.range,Ad=Hh(function(t){t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+n)},function(t,n){return(n-t)/864e5},function(t){return t.getUTCDate()-1}),kd=Ad.range;function Sd(t){return Hh(function(n){n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+7*n)},function(t,n){return(n-t)/Vh})}var Td=Sd(0),Ed=Sd(1),Cd=Sd(2),Pd=Sd(3),zd=Sd(4),Rd=Sd(5),qd=Sd(6),Dd=Td.range,Ld=Ed.range,Ud=Cd.range,Od=Pd.range,Yd=zd.range,Bd=Rd.range,Fd=qd.range,Id=Hh(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCMonth(t.getUTCMonth()+n)},function(t,n){return n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()}),Hd=Id.range,jd=Hh(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n)},function(t,n){return n.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});jd.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Hh(function(n){n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},function(n,e){n.setUTCFullYear(n.getUTCFullYear()+e*t)}):null};var Xd=jd.range;function Gd(t){if(0<=t.y&&t.y<100){var n=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return n.setFullYear(t.y),n}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Vd(t){if(0<=t.y&&t.y<100){var n=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return n.setUTCFullYear(t.y),n}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function $d(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}function Wd(t){var n=t.dateTime,e=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,u=t.months,c=t.shortMonths,f=rp(i),s=ip(i),l=rp(o),h=ip(o),d=rp(a),p=ip(a),v=rp(u),g=ip(u),y=rp(c),_=ip(c),b={a:function(t){return a[t.getDay()]},A:function(t){return o[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return u[t.getMonth()]},c:null,d:Np,e:Np,f:Ep,H:Ap,I:kp,j:Sp,L:Tp,m:Cp,M:Pp,p:function(t){return i[+(t.getHours()>=12)]},Q:ov,s:av,S:zp,u:Rp,U:qp,V:Dp,w:Lp,W:Up,x:null,X:null,y:Op,Y:Yp,Z:Bp,"%":iv},m={a:function(t){return a[t.getUTCDay()]},A:function(t){return o[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return u[t.getUTCMonth()]},c:null,d:Fp,e:Fp,f:Gp,H:Ip,I:Hp,j:jp,L:Xp,m:Vp,M:$p,p:function(t){return i[+(t.getUTCHours()>=12)]},Q:ov,s:av,S:Wp,u:Zp,U:Qp,V:Jp,w:Kp,W:tv,x:null,X:null,y:nv,Y:ev,Z:rv,"%":iv},x={a:function(t,n,e){var r=d.exec(n.slice(e));return r?(t.w=p[r[0].toLowerCase()],e+r[0].length):-1},A:function(t,n,e){var r=l.exec(n.slice(e));return r?(t.w=h[r[0].toLowerCase()],e+r[0].length):-1},b:function(t,n,e){var r=y.exec(n.slice(e));return r?(t.m=_[r[0].toLowerCase()],e+r[0].length):-1},B:function(t,n,e){var r=v.exec(n.slice(e));return r?(t.m=g[r[0].toLowerCase()],e+r[0].length):-1},c:function(t,e,r){return N(t,n,e,r)},d:pp,e:pp,f:mp,H:gp,I:gp,j:vp,L:bp,m:dp,M:yp,p:function(t,n,e){var r=f.exec(n.slice(e));return r?(t.p=s[r[0].toLowerCase()],e+r[0].length):-1},Q:wp,s:Mp,S:_p,u:ap,U:up,V:cp,w:op,W:fp,x:function(t,n,r){return N(t,e,n,r)},X:function(t,n,e){return N(t,r,n,e)},y:lp,Y:sp,Z:hp,"%":xp};function w(t,n){return function(e){var r,i,o,a=[],u=-1,c=0,f=t.length;for(e instanceof Date||(e=new Date(+e));++u53)return null;"w"in o||(o.w=1),"Z"in o?(i=(r=Vd($d(o.y))).getUTCDay(),r=i>4||0===i?Ed.ceil(r):Ed(r),r=Ad.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(i=(r=n($d(o.y))).getDay(),r=i>4||0===i?id.ceil(r):id(r),r=td.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else("W"in o||"U"in o)&&("w"in o||(o.w="u"in o?o.u%7:"W"in o?1:0),i="Z"in o?Vd($d(o.y)).getUTCDay():n($d(o.y)).getDay(),o.m=0,o.d="W"in o?(o.w+6)%7+7*o.W-(i+5)%7:o.w+7*o.U-(i+6)%7);return"Z"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,Vd(o)):n(o)}}function N(t,n,e,r){for(var i,o,a=0,u=n.length,c=e.length;a=c)return-1;if(37===(i=n.charCodeAt(a++))){if(i=n.charAt(a++),!(o=x[i in Qd?n.charAt(a++):i])||(r=o(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}return b.x=w(e,b),b.X=w(r,b),b.c=w(n,b),m.x=w(e,m),m.X=w(r,m),m.c=w(n,m),{format:function(t){var n=w(t+="",b);return n.toString=function(){return t},n},parse:function(t){var n=M(t+="",Gd);return n.toString=function(){return t},n},utcFormat:function(t){var n=w(t+="",m);return n.toString=function(){return t},n},utcParse:function(t){var n=M(t,Vd);return n.toString=function(){return t},n}}}var Zd,Qd={"-":"",_:" ",0:"0"},Jd=/^\s*\d+/,Kd=/^%/,tp=/[\\^$*+?|[\]().{}]/g;function np(t,n,e){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o68?1900:2e3),e+r[0].length):-1}function hp(t,n,e){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(n.slice(e,e+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function dp(t,n,e){var r=Jd.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function pp(t,n,e){var r=Jd.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function vp(t,n,e){var r=Jd.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function gp(t,n,e){var r=Jd.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function yp(t,n,e){var r=Jd.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function _p(t,n,e){var r=Jd.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function bp(t,n,e){var r=Jd.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function mp(t,n,e){var r=Jd.exec(n.slice(e,e+6));return r?(t.L=Math.floor(r[0]/1e3),e+r[0].length):-1}function xp(t,n,e){var r=Kd.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function wp(t,n,e){var r=Jd.exec(n.slice(e));return r?(t.Q=+r[0],e+r[0].length):-1}function Mp(t,n,e){var r=Jd.exec(n.slice(e));return r?(t.Q=1e3*+r[0],e+r[0].length):-1}function Np(t,n){return np(t.getDate(),n,2)}function Ap(t,n){return np(t.getHours(),n,2)}function kp(t,n){return np(t.getHours()%12||12,n,2)}function Sp(t,n){return np(1+td.count(bd(t),t),n,3)}function Tp(t,n){return np(t.getMilliseconds(),n,3)}function Ep(t,n){return Tp(t,n)+"000"}function Cp(t,n){return np(t.getMonth()+1,n,2)}function Pp(t,n){return np(t.getMinutes(),n,2)}function zp(t,n){return np(t.getSeconds(),n,2)}function Rp(t){var n=t.getDay();return 0===n?7:n}function qp(t,n){return np(rd.count(bd(t),t),n,2)}function Dp(t,n){var e=t.getDay();return t=e>=4||0===e?ud(t):ud.ceil(t),np(ud.count(bd(t),t)+(4===bd(t).getDay()),n,2)}function Lp(t){return t.getDay()}function Up(t,n){return np(id.count(bd(t),t),n,2)}function Op(t,n){return np(t.getFullYear()%100,n,2)}function Yp(t,n){return np(t.getFullYear()%1e4,n,4)}function Bp(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+np(n/60|0,"0",2)+np(n%60,"0",2)}function Fp(t,n){return np(t.getUTCDate(),n,2)}function Ip(t,n){return np(t.getUTCHours(),n,2)}function Hp(t,n){return np(t.getUTCHours()%12||12,n,2)}function jp(t,n){return np(1+Ad.count(jd(t),t),n,3)}function Xp(t,n){return np(t.getUTCMilliseconds(),n,3)}function Gp(t,n){return Xp(t,n)+"000"}function Vp(t,n){return np(t.getUTCMonth()+1,n,2)}function $p(t,n){return np(t.getUTCMinutes(),n,2)}function Wp(t,n){return np(t.getUTCSeconds(),n,2)}function Zp(t){var n=t.getUTCDay();return 0===n?7:n}function Qp(t,n){return np(Td.count(jd(t),t),n,2)}function Jp(t,n){var e=t.getUTCDay();return t=e>=4||0===e?zd(t):zd.ceil(t),np(zd.count(jd(t),t)+(4===jd(t).getUTCDay()),n,2)}function Kp(t){return t.getUTCDay()}function tv(t,n){return np(Ed.count(jd(t),t),n,2)}function nv(t,n){return np(t.getUTCFullYear()%100,n,2)}function ev(t,n){return np(t.getUTCFullYear()%1e4,n,4)}function rv(){return"+0000"}function iv(){return"%"}function ov(t){return+t}function av(t){return Math.floor(+t/1e3)}function uv(n){return Zd=Wd(n),t.timeFormat=Zd.format,t.timeParse=Zd.parse,t.utcFormat=Zd.utcFormat,t.utcParse=Zd.utcParse,Zd}uv({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var cv=Date.prototype.toISOString?function(t){return t.toISOString()}:t.utcFormat("%Y-%m-%dT%H:%M:%S.%LZ");var fv=+new Date("2000-01-01T00:00:00.000Z")?function(t){var n=new Date(t);return isNaN(n)?null:n}:t.utcParse("%Y-%m-%dT%H:%M:%S.%LZ"),sv=1e3,lv=60*sv,hv=60*lv,dv=24*hv,pv=7*dv,vv=30*dv,gv=365*dv;function yv(t){return new Date(t)}function _v(t){return t instanceof Date?+t:+new Date(+t)}function bv(t,n,r,i,o,a,u,c,f){var s=wh(vh,vh),l=s.invert,h=s.domain,d=f(".%L"),p=f(":%S"),v=f("%I:%M"),g=f("%I %p"),y=f("%a %d"),_=f("%b %d"),b=f("%B"),m=f("%Y"),x=[[u,1,sv],[u,5,5*sv],[u,15,15*sv],[u,30,30*sv],[a,1,lv],[a,5,5*lv],[a,15,15*lv],[a,30,30*lv],[o,1,hv],[o,3,3*hv],[o,6,6*hv],[o,12,12*hv],[i,1,dv],[i,2,2*dv],[r,1,pv],[n,1,vv],[n,3,3*vv],[t,1,gv]];function M(e){return(u(e)=1?iy:t<=-1?-iy:Math.asin(t)}function uy(t){return t.innerRadius}function cy(t){return t.outerRadius}function fy(t){return t.startAngle}function sy(t){return t.endAngle}function ly(t){return t&&t.padAngle}function hy(t,n,e,r,i,o,a){var u=t-e,c=n-r,f=(a?o:-o)/ny(u*u+c*c),s=f*c,l=-f*u,h=t+s,d=n+l,p=e+s,v=r+l,g=(h+p)/2,y=(d+v)/2,_=p-h,b=v-d,m=_*_+b*b,x=i-o,w=h*v-p*d,M=(b<0?-1:1)*ny(Jg(0,x*x*m-w*w)),N=(w*b-_*M)/m,A=(-w*_-b*M)/m,k=(w*b+_*M)/m,S=(-w*_+b*M)/m,T=N-g,E=A-y,C=k-g,P=S-y;return T*T+E*E>C*C+P*P&&(N=k,A=S),{cx:N,cy:A,x01:-s,y01:-l,x11:N*(i/x-1),y11:A*(i/x-1)}}function dy(t){this._context=t}function py(t){return new dy(t)}function vy(t){return t[0]}function gy(t){return t[1]}function yy(){var t=vy,n=gy,e=$g(!0),r=null,i=py,o=null;function a(a){var u,c,f,s=a.length,l=!1;for(null==r&&(o=i(f=ji())),u=0;u<=s;++u)!(u=s;--l)u.point(g[l],y[l]);u.lineEnd(),u.areaEnd()}v&&(g[f]=+t(h,f,c),y[f]=+e(h,f,c),u.point(n?+n(h,f,c):g[f],r?+r(h,f,c):y[f]))}if(d)return u=null,d+""||null}function f(){return yy().defined(i).curve(a).context(o)}return c.x=function(e){return arguments.length?(t="function"==typeof e?e:$g(+e),n=null,c):t},c.x0=function(n){return arguments.length?(t="function"==typeof n?n:$g(+n),c):t},c.x1=function(t){return arguments.length?(n=null==t?null:"function"==typeof t?t:$g(+t),c):n},c.y=function(t){return arguments.length?(e="function"==typeof t?t:$g(+t),r=null,c):e},c.y0=function(t){return arguments.length?(e="function"==typeof t?t:$g(+t),c):e},c.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:$g(+t),c):r},c.lineX0=c.lineY0=function(){return f().x(t).y(e)},c.lineY1=function(){return f().x(t).y(r)},c.lineX1=function(){return f().x(n).y(e)},c.defined=function(t){return arguments.length?(i="function"==typeof t?t:$g(!!t),c):i},c.curve=function(t){return arguments.length?(a=t,null!=o&&(u=a(o)),c):a},c.context=function(t){return arguments.length?(null==t?o=u=null:u=a(o=t),c):o},c}function by(t,n){return nt?1:n>=t?0:NaN}function my(t){return t}dy.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}};var xy=My(py);function wy(t){this._curve=t}function My(t){function n(n){return new wy(t(n))}return n._curve=t,n}function Ny(t){var n=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?n(My(t)):n()._curve},t}function Ay(){return Ny(yy().curve(xy))}function ky(){var t=_y().curve(xy),n=t.curve,e=t.lineX0,r=t.lineX1,i=t.lineY0,o=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return Ny(e())},delete t.lineX0,t.lineEndAngle=function(){return Ny(r())},delete t.lineX1,t.lineInnerRadius=function(){return Ny(i())},delete t.lineY0,t.lineOuterRadius=function(){return Ny(o())},delete t.lineY1,t.curve=function(t){return arguments.length?n(My(t)):n()._curve},t}function Sy(t,n){return[(n=+n)*Math.cos(t-=Math.PI/2),n*Math.sin(t)]}wy.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,n){this._curve.point(n*Math.sin(t),n*-Math.cos(t))}};var Ty=Array.prototype.slice;function Ey(t){return t.source}function Cy(t){return t.target}function Py(t){var n=Ey,e=Cy,r=vy,i=gy,o=null;function a(){var a,u=Ty.call(arguments),c=n.apply(this,u),f=e.apply(this,u);if(o||(o=a=ji()),t(o,+r.apply(this,(u[0]=c,u)),+i.apply(this,u),+r.apply(this,(u[0]=f,u)),+i.apply(this,u)),a)return o=null,a+""||null}return a.source=function(t){return arguments.length?(n=t,a):n},a.target=function(t){return arguments.length?(e=t,a):e},a.x=function(t){return arguments.length?(r="function"==typeof t?t:$g(+t),a):r},a.y=function(t){return arguments.length?(i="function"==typeof t?t:$g(+t),a):i},a.context=function(t){return arguments.length?(o=null==t?null:t,a):o},a}function zy(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n=(n+r)/2,e,n,i,r,i)}function Ry(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n,e=(e+i)/2,r,e,r,i)}function qy(t,n,e,r,i){var o=Sy(n,e),a=Sy(n,e=(e+i)/2),u=Sy(r,e),c=Sy(r,i);t.moveTo(o[0],o[1]),t.bezierCurveTo(a[0],a[1],u[0],u[1],c[0],c[1])}var Dy={draw:function(t,n){var e=Math.sqrt(n/ry);t.moveTo(e,0),t.arc(0,0,e,0,oy)}},Ly={draw:function(t,n){var e=Math.sqrt(n/5)/2;t.moveTo(-3*e,-e),t.lineTo(-e,-e),t.lineTo(-e,-3*e),t.lineTo(e,-3*e),t.lineTo(e,-e),t.lineTo(3*e,-e),t.lineTo(3*e,e),t.lineTo(e,e),t.lineTo(e,3*e),t.lineTo(-e,3*e),t.lineTo(-e,e),t.lineTo(-3*e,e),t.closePath()}},Uy=Math.sqrt(1/3),Oy=2*Uy,Yy={draw:function(t,n){var e=Math.sqrt(n/Oy),r=e*Uy;t.moveTo(0,-e),t.lineTo(r,0),t.lineTo(0,e),t.lineTo(-r,0),t.closePath()}},By=Math.sin(ry/10)/Math.sin(7*ry/10),Fy=Math.sin(oy/10)*By,Iy=-Math.cos(oy/10)*By,Hy={draw:function(t,n){var e=Math.sqrt(.8908130915292852*n),r=Fy*e,i=Iy*e;t.moveTo(0,-e),t.lineTo(r,i);for(var o=1;o<5;++o){var a=oy*o/5,u=Math.cos(a),c=Math.sin(a);t.lineTo(c*e,-u*e),t.lineTo(u*r-c*i,c*r+u*i)}t.closePath()}},jy={draw:function(t,n){var e=Math.sqrt(n),r=-e/2;t.rect(r,r,e,e)}},Xy=Math.sqrt(3),Gy={draw:function(t,n){var e=-Math.sqrt(n/(3*Xy));t.moveTo(0,2*e),t.lineTo(-Xy*e,-e),t.lineTo(Xy*e,-e),t.closePath()}},Vy=Math.sqrt(3)/2,$y=1/Math.sqrt(12),Wy=3*($y/2+1),Zy={draw:function(t,n){var e=Math.sqrt(n/Wy),r=e/2,i=e*$y,o=r,a=e*$y+e,u=-o,c=a;t.moveTo(r,i),t.lineTo(o,a),t.lineTo(u,c),t.lineTo(-.5*r-Vy*i,Vy*r+-.5*i),t.lineTo(-.5*o-Vy*a,Vy*o+-.5*a),t.lineTo(-.5*u-Vy*c,Vy*u+-.5*c),t.lineTo(-.5*r+Vy*i,-.5*i-Vy*r),t.lineTo(-.5*o+Vy*a,-.5*a-Vy*o),t.lineTo(-.5*u+Vy*c,-.5*c-Vy*u),t.closePath()}},Qy=[Dy,Ly,Yy,jy,Hy,Gy,Zy];function Jy(){}function Ky(t,n,e){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+n)/6,(t._y0+4*t._y1+e)/6)}function t_(t){this._context=t}function n_(t){this._context=t}function e_(t){this._context=t}function r_(t,n){this._basis=new t_(t),this._beta=n}t_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Ky(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Ky(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},n_.prototype={areaStart:Jy,areaEnd:Jy,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x2=t,this._y2=n;break;case 1:this._point=2,this._x3=t,this._y3=n;break;case 2:this._point=3,this._x4=t,this._y4=n,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+n)/6);break;default:Ky(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},e_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var e=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+n)/6;this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break;case 3:this._point=4;default:Ky(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},r_.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,n=this._y,e=t.length-1;if(e>0)for(var r,i=t[0],o=n[0],a=t[e]-i,u=n[e]-o,c=-1;++c<=e;)r=c/e,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*a),this._beta*n[c]+(1-this._beta)*(o+r*u));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var i_=function t(n){function e(t){return 1===n?new t_(t):new r_(t,n)}return e.beta=function(n){return t(+n)},e}(.85);function o_(t,n,e){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-n),t._y2+t._k*(t._y1-e),t._x2,t._y2)}function a_(t,n){this._context=t,this._k=(1-n)/6}a_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:o_(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2,this._x1=t,this._y1=n;break;case 2:this._point=3;default:o_(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var u_=function t(n){function e(t){return new a_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function c_(t,n){this._context=t,this._k=(1-n)/6}c_.prototype={areaStart:Jy,areaEnd:Jy,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:o_(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var f_=function t(n){function e(t){return new c_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function s_(t,n){this._context=t,this._k=(1-n)/6}s_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:o_(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var l_=function t(n){function e(t){return new s_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function h_(t,n,e){var r=t._x1,i=t._y1,o=t._x2,a=t._y2;if(t._l01_a>ey){var u=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*u-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*u-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>ey){var f=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,s=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*f+t._x1*t._l23_2a-n*t._l12_2a)/s,a=(a*f+t._y1*t._l23_2a-e*t._l12_2a)/s}t._context.bezierCurveTo(r,i,o,a,t._x2,t._y2)}function d_(t,n){this._context=t,this._alpha=n}d_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3;default:h_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var p_=function t(n){function e(t){return n?new d_(t,n):new a_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function v_(t,n){this._context=t,this._alpha=n}v_.prototype={areaStart:Jy,areaEnd:Jy,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:h_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var g_=function t(n){function e(t){return n?new v_(t,n):new c_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function y_(t,n){this._context=t,this._alpha=n}y_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:h_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var __=function t(n){function e(t){return n?new y_(t,n):new s_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function b_(t){this._context=t}function m_(t){return t<0?-1:1}function x_(t,n,e){var r=t._x1-t._x0,i=n-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),a=(e-t._y1)/(i||r<0&&-0),u=(o*i+a*r)/(r+i);return(m_(o)+m_(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(u))||0}function w_(t,n){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-n)/2:n}function M_(t,n,e){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,u=(o-r)/3;t._context.bezierCurveTo(r+u,i+u*n,o-u,a-u*e,o,a)}function N_(t){this._context=t}function A_(t){this._context=new k_(t)}function k_(t){this._context=t}function S_(t){this._context=t}function T_(t){var n,e,r=t.length-1,i=new Array(r),o=new Array(r),a=new Array(r);for(i[0]=0,o[0]=2,a[0]=t[0]+2*t[1],n=1;n=0;--n)i[n]=(a[n]-i[n+1])/o[n];for(o[r-1]=(t[r]+i[r-1])/2,n=0;n1)for(var e,r,i,o=1,a=t[n[0]],u=a.length;o=0;)e[n]=n;return e}function z_(t,n){return t[n]}function R_(t){var n=t.map(q_);return P_(t).sort(function(t,e){return n[t]-n[e]})}function q_(t){for(var n,e=-1,r=0,i=t.length,o=-1/0;++eo&&(o=n,r=e);return r}function D_(t){var n=t.map(L_);return P_(t).sort(function(t,e){return n[t]-n[e]})}function L_(t){for(var n,e=0,r=-1,i=t.length;++r0)){if(o/=h,h<0){if(o0){if(o>l)return;o>s&&(s=o)}if(o=r-c,h||!(o<0)){if(o/=h,h<0){if(o>l)return;o>s&&(s=o)}else if(h>0){if(o0)){if(o/=d,d<0){if(o0){if(o>l)return;o>s&&(s=o)}if(o=i-f,d||!(o<0)){if(o/=d,d<0){if(o>l)return;o>s&&(s=o)}else if(d>0){if(o0||l<1)||(s>0&&(t[0]=[c+s*h,f+s*d]),l<1&&(t[1]=[c+l*h,f+l*d]),!0)}}}}}function W_(t,n,e,r,i){var o=t[1];if(o)return!0;var a,u,c=t[0],f=t.left,s=t.right,l=f[0],h=f[1],d=s[0],p=s[1],v=(l+d)/2,g=(h+p)/2;if(p===h){if(v=r)return;if(l>d){if(c){if(c[1]>=i)return}else c=[v,e];o=[v,i]}else{if(c){if(c[1]1)if(l>d){if(c){if(c[1]>=i)return}else c=[(e-u)/a,e];o=[(i-u)/a,i]}else{if(c){if(c[1]=r)return}else c=[n,a*n+u];o=[r,a*r+u]}else{if(c){if(c[0]=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,n),this._context.lineTo(t,n);else{var e=this._x*(1-this._t)+t*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,n)}}this._x=t,this._y=n}},B_.prototype={constructor:B_,insert:function(t,n){var e,r,i;if(t){if(n.P=t,n.N=t.N,t.N&&(t.N.P=n),t.N=n,t.R){for(t=t.R;t.L;)t=t.L;t.L=n}else t.R=n;e=t}else this._?(t=j_(this._),n.P=null,n.N=t,t.P=t.L=n,e=t):(n.P=n.N=null,this._=n,e=null);for(n.L=n.R=null,n.U=e,n.C=!0,t=n;e&&e.C;)e===(r=e.U).L?(i=r.R)&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.R&&(I_(this,e),e=(t=e).U),e.C=!1,r.C=!0,H_(this,r)):(i=r.L)&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.L&&(H_(this,e),e=(t=e).U),e.C=!1,r.C=!0,I_(this,r)),e=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var n,e,r,i=t.U,o=t.L,a=t.R;if(e=o?a?j_(a):o:a,i?i.L===t?i.L=e:i.R=e:this._=e,o&&a?(r=e.C,e.C=t.C,e.L=o,o.U=e,e!==a?(i=e.U,e.U=t.U,t=e.R,i.L=t,e.R=a,a.U=e):(e.U=i,i=e,t=e.R)):(r=t.C,t=e),t&&(t.U=i),!r)if(t&&t.C)t.C=!1;else{do{if(t===this._)break;if(t===i.L){if((n=i.R).C&&(n.C=!1,i.C=!0,I_(this,i),n=i.R),n.L&&n.L.C||n.R&&n.R.C){n.R&&n.R.C||(n.L.C=!1,n.C=!0,H_(this,n),n=i.R),n.C=i.C,i.C=n.R.C=!1,I_(this,i),t=this._;break}}else if((n=i.L).C&&(n.C=!1,i.C=!0,H_(this,i),n=i.L),n.L&&n.L.C||n.R&&n.R.C){n.L&&n.L.C||(n.R.C=!1,n.C=!0,I_(this,n),n=i.L),n.C=i.C,i.C=n.L.C=!1,H_(this,i),t=this._;break}n.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}};var K_,tb=[];function nb(){F_(this),this.x=this.y=this.arc=this.site=this.cy=null}function eb(t){var n=t.P,e=t.N;if(n&&e){var r=n.site,i=t.site,o=e.site;if(r!==o){var a=i[0],u=i[1],c=r[0]-a,f=r[1]-u,s=o[0]-a,l=o[1]-u,h=2*(c*l-f*s);if(!(h>=-yb)){var d=c*c+f*f,p=s*s+l*l,v=(l*d-f*p)/h,g=(c*p-s*d)/h,y=tb.pop()||new nb;y.arc=t,y.site=i,y.x=v+a,y.y=(y.cy=g+u)+Math.sqrt(v*v+g*g),t.circle=y;for(var _=null,b=pb._;b;)if(y.ygb)u=u.L;else{if(!((i=o-lb(u,a))>gb)){r>-gb?(n=u.P,e=u):i>-gb?(n=u,e=u.N):n=e=u;break}if(!u.R){n=u;break}u=u.R}!function(t){db[t.index]={site:t,halfedges:[]}}(t);var c=ab(t);if(hb.insert(n,c),n||e){if(n===e)return rb(n),e=ab(n.site),hb.insert(c,e),c.edge=e.edge=X_(n.site,c.site),eb(n),void eb(e);if(e){rb(n),rb(e);var f=n.site,s=f[0],l=f[1],h=t[0]-s,d=t[1]-l,p=e.site,v=p[0]-s,g=p[1]-l,y=2*(h*g-d*v),_=h*h+d*d,b=v*v+g*g,m=[(g*_-d*b)/y+s,(h*b-v*_)/y+l];V_(e.edge,f,p,m),c.edge=X_(f,t,null,m),e.edge=X_(t,p,null,m),eb(n),eb(e)}else c.edge=X_(n.site,c.site)}}function sb(t,n){var e=t.site,r=e[0],i=e[1],o=i-n;if(!o)return r;var a=t.P;if(!a)return-1/0;var u=(e=a.site)[0],c=e[1],f=c-n;if(!f)return u;var s=u-r,l=1/o-1/f,h=s/f;return l?(-h+Math.sqrt(h*h-2*l*(s*s/(-2*f)-c+f/2+i-o/2)))/l+r:(r+u)/2}function lb(t,n){var e=t.N;if(e)return sb(e,n);var r=t.site;return r[1]===n?r[0]:1/0}var hb,db,pb,vb,gb=1e-6,yb=1e-12;function _b(t,n){return n[1]-t[1]||n[0]-t[0]}function bb(t,n){var e,r,i,o=t.sort(_b).pop();for(vb=[],db=new Array(t.length),hb=new B_,pb=new B_;;)if(i=K_,o&&(!i||o[1]gb||Math.abs(i[0][1]-i[1][1])>gb)||delete vb[o]}(a,u,c,f),function(t,n,e,r){var i,o,a,u,c,f,s,l,h,d,p,v,g=db.length,y=!0;for(i=0;igb||Math.abs(v-h)>gb)&&(c.splice(u,0,vb.push(G_(a,d,Math.abs(p-t)gb?[t,Math.abs(l-t)gb?[Math.abs(h-r)gb?[e,Math.abs(l-e)gb?[Math.abs(h-n)=u)return null;var c=t-i.site[0],f=n-i.site[1],s=c*c+f*f;do{i=o.cells[r=a],a=null,i.halfedges.forEach(function(e){var r=o.edges[e],u=r.left;if(u!==i.site&&u||(u=r.right)){var c=t-u[0],f=n-u[1],l=c*c+f*f;lr?(r+i)/2:Math.min(0,r)||Math.max(0,i),a>o?(o+a)/2:Math.min(0,o)||Math.max(0,a))}Nb.prototype=wb.prototype,t.version="5.8.0",t.bisect=i,t.bisectRight=i,t.bisectLeft=o,t.ascending=n,t.bisector=e,t.cross=function(t,n,e){var r,i,o,u,c=t.length,f=n.length,s=new Array(c*f);for(null==e&&(e=a),r=o=0;rt?1:n>=t?0:NaN},t.deviation=f,t.extent=s,t.histogram=function(){var t=v,n=s,e=M;function r(r){var o,a,u=r.length,c=new Array(u);for(o=0;ol;)h.pop(),--d;var p,v=new Array(d+1);for(o=0;o<=d;++o)(p=v[o]=[]).x0=o>0?h[o-1]:s,p.x1=o=r.length)return null!=t&&e.sort(t),null!=n?n(e):e;for(var c,f,s,l=-1,h=e.length,d=r[i++],p=Qi(),v=a();++lr.length)return e;var a,u=i[o-1];return null!=n&&o>=r.length?a=e.entries():(a=[],e.each(function(n,e){a.push({key:e,values:t(n,o)})})),null!=u?a.sort(function(t,n){return u(t.key,n.key)}):a}(o(t,0,to,no),0)},key:function(t){return r.push(t),e},sortKeys:function(t){return i[r.length-1]=t,e},sortValues:function(n){return t=n,e},rollup:function(t){return n=t,e}}},t.set=io,t.map=Qi,t.keys=function(t){var n=[];for(var e in t)n.push(e);return n},t.values=function(t){var n=[];for(var e in t)n.push(t[e]);return n},t.entries=function(t){var n=[];for(var e in t)n.push({key:e,value:t[e]});return n},t.color=hn,t.rgb=gn,t.hsl=mn,t.lab=Rn,t.hcl=Bn,t.lch=function(t,n,e,r){return 1===arguments.length?Yn(t):new Fn(e,n,t,null==r?1:r)},t.gray=function(t,n){return new qn(t,0,0,null==n?1:n)},t.cubehelix=Zn,t.contours=po,t.contourDensity=function(){var t=yo,n=_o,e=bo,r=960,i=500,o=20,a=2,u=3*o,c=r+2*u>>a,f=i+2*u>>a,s=uo(20);function l(r){var i=new Float32Array(c*f),l=new Float32Array(c*f);r.forEach(function(r,o,s){var l=+t(r,o,s)+u>>a,h=+n(r,o,s)+u>>a,d=+e(r,o,s);l>=0&&l=0&&h>a),go({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a),vo({width:c,height:f,data:i},{width:c,height:f,data:l},o>>a),go({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a),vo({width:c,height:f,data:i},{width:c,height:f,data:l},o>>a),go({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a);var d=s(i);if(!Array.isArray(d)){var p=A(i);d=w(0,p,d),(d=g(0,Math.floor(p/d)*d,d)).shift()}return po().thresholds(d).size([c,f])(i).map(h)}function h(t){return t.value*=Math.pow(2,-2*a),t.coordinates.forEach(d),t}function d(t){t.forEach(p)}function p(t){t.forEach(v)}function v(t){t[0]=t[0]*Math.pow(2,a)-u,t[1]=t[1]*Math.pow(2,a)-u}function y(){return c=r+2*(u=3*o)>>a,f=i+2*u>>a,l}return l.x=function(n){return arguments.length?(t="function"==typeof n?n:uo(+n),l):t},l.y=function(t){return arguments.length?(n="function"==typeof t?t:uo(+t),l):n},l.weight=function(t){return arguments.length?(e="function"==typeof t?t:uo(+t),l):e},l.size=function(t){if(!arguments.length)return[r,i];var n=Math.ceil(t[0]),e=Math.ceil(t[1]);if(!(n>=0||n>=0))throw new Error("invalid size");return r=n,i=e,y()},l.cellSize=function(t){if(!arguments.length)return 1<=1))throw new Error("invalid cell size");return a=Math.floor(Math.log(t)/Math.LN2),y()},l.thresholds=function(t){return arguments.length?(s="function"==typeof t?t:Array.isArray(t)?uo(oo.call(t)):uo(t),l):s},l.bandwidth=function(t){if(!arguments.length)return Math.sqrt(o*(o+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return o=Math.round((Math.sqrt(4*t*t+1)-1)/2),y()},l},t.dispatch=I,t.drag=function(){var n,e,r,i,o=Gt,a=Vt,u=$t,c=Wt,f={},s=I("start","drag","end"),l=0,h=0;function d(t){t.on("mousedown.drag",p).filter(c).on("touchstart.drag",y).on("touchmove.drag",_).on("touchend.drag touchcancel.drag",b).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function p(){if(!i&&o.apply(this,arguments)){var u=m("mouse",a.apply(this,arguments),Ot,this,arguments);u&&(zt(t.event.view).on("mousemove.drag",v,!0).on("mouseup.drag",g,!0),It(t.event.view),Bt(),r=!1,n=t.event.clientX,e=t.event.clientY,u("start"))}}function v(){if(Ft(),!r){var i=t.event.clientX-n,o=t.event.clientY-e;r=i*i+o*o>h}f.mouse("drag")}function g(){zt(t.event.view).on("mousemove.drag mouseup.drag",null),Ht(t.event.view,r),Ft(),f.mouse("end")}function y(){if(o.apply(this,arguments)){var n,e,r=t.event.changedTouches,i=a.apply(this,arguments),u=r.length;for(n=0;nc+d||if+d||ou.index){var p=c-a.x-a.vx,v=f-a.y-a.vy,g=p*p+v*v;gt.r&&(t.r=t[n].r)}function u(){if(n){var r,i,o=n.length;for(e=new Array(o),r=0;r=a)){(t.data!==n||t.next)&&(0===s&&(d+=(s=Zo())*s),0===l&&(d+=(l=Zo())*l),d1?(null==e?u.remove(t):u.set(t,d(e)),n):u.get(t)},find:function(n,e,r){var i,o,a,u,c,f=0,s=t.length;for(null==r?r=1/0:r*=r,f=0;f1?(f.on(t,e),n):f.on(t)}}},t.forceX=function(t){var n,e,r,i=Wo(.1);function o(t){for(var i,o=0,a=n.length;ofc(r[0],r[1])&&(r[1]=i[1]),fc(i[0],r[1])>fc(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(a=-1/0,n=0,r=o[e=o.length-1];n<=e;r=i,++n)i=o[n],(u=fc(r[1],i[0]))>a&&(a=u,Tu=i[0],Cu=r[1])}return Lu=Uu=null,Tu===1/0||Eu===1/0?[[NaN,NaN],[NaN,NaN]]:[[Tu,Eu],[Cu,Pu]]},t.geoCentroid=function(t){Ou=Yu=Bu=Fu=Iu=Hu=ju=Xu=Gu=Vu=$u=0,cu(t,hc);var n=Gu,e=Vu,r=$u,i=n*n+e*e+r*r;return i=.12&&i<.234&&r>=-.425&&r<-.214?u:i>=.166&&i<.234&&r>=-.214&&r<-.115?c:a).invert(t)},s.stream=function(e){return t&&n===e?t:(r=[a.stream(n=e),u.stream(e),c.stream(e)],i=r.length,t={point:function(t,n){for(var e=-1;++e2?t[2]+90:90]):[(t=e())[0],t[1],t[2]-90]},e([0,0,90]).scale(159.155)},t.geoTransverseMercatorRaw=nl,t.geoRotation=Cc,t.geoStream=cu,t.geoTransform=function(t){return{stream:gs(t)}},t.cluster=function(){var t=el,n=1,e=1,r=!1;function i(i){var o,a=0;i.eachAfter(function(n){var e=n.children;e?(n.x=function(t){return t.reduce(rl,0)/t.length}(e),n.y=function(t){return 1+t.reduce(il,0)}(e)):(n.x=o?a+=t(n,o):0,n.y=0,o=n)});var u=function(t){for(var n;n=t.children;)t=n[0];return t}(i),c=function(t){for(var n;n=t.children;)t=n[n.length-1];return t}(i),f=u.x-t(u,c)/2,s=c.x+t(c,u)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*n,t.y=(i.y-t.y)*e}:function(t){t.x=(t.x-f)/(s-f)*n,t.y=(1-(i.y?t.y/i.y:1))*e})}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},t.hierarchy=al,t.pack=function(){var t=null,n=1,e=1,r=kl;function i(i){return i.x=n/2,i.y=e/2,t?i.eachBefore(El(t)).eachAfter(Cl(r,.5)).eachBefore(Pl(1)):i.eachBefore(El(Tl)).eachAfter(Cl(kl,1)).eachAfter(Cl(r,i.r/Math.min(n,e))).eachBefore(Pl(Math.min(n,e)/(2*i.r))),i}return i.radius=function(n){return arguments.length?(t=null==(e=n)?null:Al(e),i):t;var e},i.size=function(t){return arguments.length?(n=+t[0],e=+t[1],i):[n,e]},i.padding=function(t){return arguments.length?(r="function"==typeof t?t:Sl(+t),i):r},i},t.packSiblings=function(t){return Nl(t),t},t.packEnclose=hl,t.partition=function(){var t=1,n=1,e=0,r=!1;function i(i){var o=i.height+1;return i.x0=i.y0=e,i.x1=t,i.y1=n/o,i.eachBefore(function(t,n){return function(r){r.children&&Rl(r,r.x0,t*(r.depth+1)/n,r.x1,t*(r.depth+2)/n);var i=r.x0,o=r.y0,a=r.x1-e,u=r.y1-e;a0)throw new Error("cycle");return o}return e.id=function(n){return arguments.length?(t=Al(n),e):t},e.parentId=function(t){return arguments.length?(n=Al(t),e):n},e},t.tree=function(){var t=Yl,n=1,e=1,r=null;function i(i){var c=function(t){for(var n,e,r,i,o,a=new jl(t,0),u=[a];n=u.pop();)if(r=n._.children)for(n.children=new Array(o=r.length),i=o-1;i>=0;--i)u.push(e=n.children[i]=new jl(r[i],i)),e.parent=n;return(a.parent=new jl(null,0)).children=[a],a}(i);if(c.eachAfter(o),c.parent.m=-c.z,c.eachBefore(a),r)i.eachBefore(u);else{var f=i,s=i,l=i;i.eachBefore(function(t){t.xs.x&&(s=t),t.depth>l.depth&&(l=t)});var h=f===s?1:t(f,s)/2,d=h-f.x,p=n/(s.x+h+d),v=e/(l.depth||1);i.eachBefore(function(t){t.x=(t.x+d)*p,t.y=t.depth*v})}return i}function o(n){var e=n.children,r=n.parent.children,i=n.i?r[n.i-1]:null;if(e){!function(t){for(var n,e=0,r=0,i=t.children,o=i.length;--o>=0;)(n=i[o]).z+=e,n.m+=e,e+=n.s+(r+=n.c)}(n);var o=(e[0].z+e[e.length-1].z)/2;i?(n.z=i.z+t(n._,i._),n.m=n.z-o):n.z=o}else i&&(n.z=i.z+t(n._,i._));n.parent.A=function(n,e,r){if(e){for(var i,o=n,a=n,u=e,c=o.parent.children[0],f=o.m,s=a.m,l=u.m,h=c.m;u=Fl(u),o=Bl(o),u&&o;)c=Bl(c),(a=Fl(a)).a=n,(i=u.z+l-o.z-f+t(u._,o._))>0&&(Il(Hl(u,n,r),n,i),f+=i,s+=i),l+=u.m,f+=o.m,h+=c.m,s+=a.m;u&&!Fl(a)&&(a.t=u,a.m+=l-s),o&&!Bl(c)&&(c.t=o,c.m+=f-h,r=n)}return r}(n,i,n.parent.A||r[0])}function a(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function u(t){t.x*=n,t.y=t.depth*e}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},t.treemap=function(){var t=$l,n=!1,e=1,r=1,i=[0],o=kl,a=kl,u=kl,c=kl,f=kl;function s(t){return t.x0=t.y0=0,t.x1=e,t.y1=r,t.eachBefore(l),i=[0],n&&t.eachBefore(zl),t}function l(n){var e=i[n.depth],r=n.x0+e,s=n.y0+e,l=n.x1-e,h=n.y1-e;l=e-1){var s=u[n];return s.x0=i,s.y0=o,s.x1=a,void(s.y1=c)}for(var l=f[n],h=r/2+l,d=n+1,p=e-1;d>>1;f[v]c-o){var _=(i*y+a*g)/r;t(n,d,g,i,o,_,c),t(d,e,y,_,o,a,c)}else{var b=(o*y+c*g)/r;t(n,d,g,i,o,a,b),t(d,e,y,i,b,a,c)}}(0,c,t.value,n,e,r,i)},t.treemapDice=Rl,t.treemapSlice=Xl,t.treemapSliceDice=function(t,n,e,r,i){(1&t.depth?Xl:Rl)(t,n,e,r,i)},t.treemapSquarify=$l,t.treemapResquarify=Wl,t.interpolate=ye,t.interpolateArray=se,t.interpolateBasis=Kn,t.interpolateBasisClosed=te,t.interpolateDate=le,t.interpolateDiscrete=function(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}},t.interpolateHue=function(t,n){var e=re(+t,+n);return function(t){var n=e(t);return n-360*Math.floor(n/360)}},t.interpolateNumber=he,t.interpolateObject=de,t.interpolateRound=_e,t.interpolateString=ge,t.interpolateTransformCss=Se,t.interpolateTransformSvg=Te,t.interpolateZoom=qe,t.interpolateRgb=ae,t.interpolateRgbBasis=ce,t.interpolateRgbBasisClosed=fe,t.interpolateHsl=Le,t.interpolateHslLong=Ue,t.interpolateLab=function(t,n){var e=oe((t=Rn(t)).l,(n=Rn(n)).l),r=oe(t.a,n.a),i=oe(t.b,n.b),o=oe(t.opacity,n.opacity);return function(n){return t.l=e(n),t.a=r(n),t.b=i(n),t.opacity=o(n),t+""}},t.interpolateHcl=Ye,t.interpolateHclLong=Be,t.interpolateCubehelix=Ie,t.interpolateCubehelixLong=He,t.piecewise=function(t,n){for(var e=0,r=n.length-1,i=n[0],o=new Array(r<0?0:r);e=0;--n)f.push(t[r[o[n]][2]]);for(n=+u;nu!=f>u&&a<(c-e)*(u-r)/(f-r)+e&&(s=!s),c=e,f=r;return s},t.polygonLength=function(t){for(var n,e,r=-1,i=t.length,o=t[i-1],a=o[0],u=o[1],c=0;++r0?a[n-1]:r[0],n=o?[a[o-1],r]:[a[n-1],a[n]]},c.unknown=function(t){return arguments.length?(n=t,c):c},c.thresholds=function(){return a.slice()},c.copy=function(){return t().domain([e,r]).range(u).unknown(n)},oh.apply(Nh(c),arguments)},t.scaleThreshold=function t(){var n,e=[.5],r=[0,1],o=1;function a(t){return t<=t?r[i(e,t,0,o)]:n}return a.domain=function(t){return arguments.length?(e=fh.call(t),o=Math.min(e.length,r.length-1),a):e.slice()},a.range=function(t){return arguments.length?(r=fh.call(t),o=Math.min(e.length,r.length-1),a):r.slice()},a.invertExtent=function(t){var n=r.indexOf(t);return[e[n-1],e[n]]},a.unknown=function(t){return arguments.length?(n=t,a):n},a.copy=function(){return t().domain(e).range(r).unknown(n)},oh.apply(a,arguments)},t.scaleTime=function(){return oh.apply(bv(bd,yd,rd,td,Jh,Zh,$h,jh,t.timeFormat).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},t.scaleUtc=function(){return oh.apply(bv(jd,Id,Td,Ad,Md,xd,$h,jh,t.utcFormat).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},t.scaleSequential=function t(){var n=Nh(mv()(vh));return n.copy=function(){return xv(n,t())},ah.apply(n,arguments)},t.scaleSequentialLog=function t(){var n=zh(mv()).domain([1,10]);return n.copy=function(){return xv(n,t()).base(n.base())},ah.apply(n,arguments)},t.scaleSequentialPow=wv,t.scaleSequentialSqrt=function(){return wv.apply(null,arguments).exponent(.5)},t.scaleSequentialSymlog=function t(){var n=Dh(mv());return n.copy=function(){return xv(n,t()).constant(n.constant())},ah.apply(n,arguments)},t.scaleSequentialQuantile=function t(){var e=[],r=vh;function o(t){if(!isNaN(t=+t))return r((i(e,t)-1)/(e.length-1))}return o.domain=function(t){if(!arguments.length)return e.slice();e=[];for(var r,i=0,a=t.length;i1)&&(t-=Math.floor(t));var n=Math.abs(t-.5);return Yg.h=360*t-100,Yg.s=1.5-1.5*n,Yg.l=.8-.9*n,Yg+""},t.interpolateWarm=Ug,t.interpolateCool=Og,t.interpolateSinebow=function(t){var n;return t=(.5-t)*Math.PI,Bg.r=255*(n=Math.sin(t))*n,Bg.g=255*(n=Math.sin(t+Fg))*n,Bg.b=255*(n=Math.sin(t+Ig))*n,Bg+""},t.interpolateViridis=jg,t.interpolateMagma=Xg,t.interpolateInferno=Gg,t.interpolatePlasma=Vg,t.create=function(t){return zt(W(t).call(document.documentElement))},t.creator=W,t.local=qt,t.matcher=tt,t.mouse=Ot,t.namespace=$,t.namespaces=V,t.clientPoint=Ut,t.select=zt,t.selectAll=function(t){return"string"==typeof t?new Ct([document.querySelectorAll(t)],[document.documentElement]):new Ct([null==t?[]:t],Et)},t.selection=Pt,t.selector=Q,t.selectorAll=K,t.style=ct,t.touch=Yt,t.touches=function(t,n){null==n&&(n=Lt().touches);for(var e=0,r=n?n.length:0,i=new Array(r);ed;if(u||(u=c=ji()),hey)if(v>oy-ey)u.moveTo(h*Qg(d),h*ty(d)),u.arc(0,0,h,d,p,!g),l>ey&&(u.moveTo(l*Qg(p),l*ty(p)),u.arc(0,0,l,p,d,g));else{var y,_,b=d,m=p,x=d,w=p,M=v,N=v,A=a.apply(this,arguments)/2,k=A>ey&&(r?+r.apply(this,arguments):ny(l*l+h*h)),S=Kg(Wg(h-l)/2,+e.apply(this,arguments)),T=S,E=S;if(k>ey){var C=ay(k/l*ty(A)),P=ay(k/h*ty(A));(M-=2*C)>ey?(x+=C*=g?1:-1,w-=C):(M=0,x=w=(d+p)/2),(N-=2*P)>ey?(b+=P*=g?1:-1,m-=P):(N=0,b=m=(d+p)/2)}var z=h*Qg(b),R=h*ty(b),q=l*Qg(w),D=l*ty(w);if(S>ey){var L,U=h*Qg(m),O=h*ty(m),Y=l*Qg(x),B=l*ty(x);if(v<=oy-ey&&(L=function(t,n,e,r,i,o,a,u){var c=e-t,f=r-n,s=a-i,l=u-o,h=l*c-s*f;if(!(h*h1?0:s<-1?ry:Math.acos(s))/2),G=ny(L[0]*L[0]+L[1]*L[1]);T=Kg(S,(l-G)/(X-1)),E=Kg(S,(h-G)/(X+1))}}N>ey?E>ey?(y=hy(Y,B,z,R,h,E,g),_=hy(U,O,q,D,h,E,g),u.moveTo(y.cx+y.x01,y.cy+y.y01),Eey&&M>ey?T>ey?(y=hy(q,D,U,O,l,-T,g),_=hy(z,R,Y,B,l,-T,g),u.lineTo(y.cx+y.x01,y.cy+y.y01),T0&&(d+=l);for(null!=n?p.sort(function(t,e){return n(v[t],v[e])}):null!=e&&p.sort(function(t,n){return e(a[t],a[n])}),u=0,f=d?(y-h*b)/d:0;u0?l*f:0)+b,v[c]={data:a[c],index:u,value:l,startAngle:g,endAngle:s,padAngle:_};return v}return a.value=function(n){return arguments.length?(t="function"==typeof n?n:$g(+n),a):t},a.sortValues=function(t){return arguments.length?(n=t,e=null,a):n},a.sort=function(t){return arguments.length?(e=t,n=null,a):e},a.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:$g(+t),a):r},a.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:$g(+t),a):i},a.padAngle=function(t){return arguments.length?(o="function"==typeof t?t:$g(+t),a):o},a},t.areaRadial=ky,t.radialArea=ky,t.lineRadial=Ay,t.radialLine=Ay,t.pointRadial=Sy,t.linkHorizontal=function(){return Py(zy)},t.linkVertical=function(){return Py(Ry)},t.linkRadial=function(){var t=Py(qy);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t},t.symbol=function(){var t=$g(Dy),n=$g(64),e=null;function r(){var r;if(e||(e=r=ji()),t.apply(this,arguments).draw(e,+n.apply(this,arguments)),r)return e=null,r+""||null}return r.type=function(n){return arguments.length?(t="function"==typeof n?n:$g(n),r):t},r.size=function(t){return arguments.length?(n="function"==typeof t?t:$g(+t),r):n},r.context=function(t){return arguments.length?(e=null==t?null:t,r):e},r},t.symbols=Qy,t.symbolCircle=Dy,t.symbolCross=Ly,t.symbolDiamond=Yy,t.symbolSquare=jy,t.symbolStar=Hy,t.symbolTriangle=Gy,t.symbolWye=Zy,t.curveBasisClosed=function(t){return new n_(t)},t.curveBasisOpen=function(t){return new e_(t)},t.curveBasis=function(t){return new t_(t)},t.curveBundle=i_,t.curveCardinalClosed=f_,t.curveCardinalOpen=l_,t.curveCardinal=u_,t.curveCatmullRomClosed=g_,t.curveCatmullRomOpen=__,t.curveCatmullRom=p_,t.curveLinearClosed=function(t){return new b_(t)},t.curveLinear=py,t.curveMonotoneX=function(t){return new N_(t)},t.curveMonotoneY=function(t){return new A_(t)},t.curveNatural=function(t){return new S_(t)},t.curveStep=function(t){return new E_(t,.5)},t.curveStepAfter=function(t){return new E_(t,1)},t.curveStepBefore=function(t){return new E_(t,0)},t.stack=function(){var t=$g([]),n=P_,e=C_,r=z_;function i(i){var o,a,u=t.apply(this,arguments),c=i.length,f=u.length,s=new Array(f);for(o=0;o0){for(var e,r,i,o=0,a=t[0].length;o1)for(var e,r,i,o,a,u,c=0,f=t[n[0]].length;c=0?(r[0]=o,r[1]=o+=i):i<0?(r[1]=a,r[0]=a+=i):r[0]=o},t.stackOffsetNone=C_,t.stackOffsetSilhouette=function(t,n){if((e=t.length)>0){for(var e,r=0,i=t[n[0]],o=i.length;r0&&(r=(e=t[n[0]]).length)>0){for(var e,r,i,o=0,a=1;adr&&e.name===n)return new Er([[t]],fi,n,+r);return null},t.interrupt=Mr,t.voronoi=function(){var t=O_,n=Y_,e=null;function r(r){return new bb(r.map(function(e,i){var o=[Math.round(t(e,i,r)/gb)*gb,Math.round(n(e,i,r)/gb)*gb];return o.index=i,o.data=e,o}),e)}return r.polygons=function(t){return r(t).polygons()},r.links=function(t){return r(t).links()},r.triangles=function(t){return r(t).triangles()},r.x=function(n){return arguments.length?(t="function"==typeof n?n:U_(+n),r):t},r.y=function(t){return arguments.length?(n="function"==typeof t?t:U_(+t),r):n},r.extent=function(t){return arguments.length?(e=null==t?null:[[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]],r):e&&[[e[0][0],e[0][1]],[e[1][0],e[1][1]]]},r.size=function(t){return arguments.length?(e=null==t?null:[[0,0],[+t[0],+t[1]]],r):e&&[e[1][0]-e[0][0],e[1][1]-e[0][1]]},r},t.zoom=function(){var n,e,r=Sb,i=Tb,o=zb,a=Cb,u=Pb,c=[0,1/0],f=[[-1/0,-1/0],[1/0,1/0]],s=250,l=qe,h=[],d=I("start","zoom","end"),p=500,v=150,g=0;function y(t){t.property("__zoom",Eb).on("wheel.zoom",N).on("mousedown.zoom",A).on("dblclick.zoom",k).filter(u).on("touchstart.zoom",S).on("touchmove.zoom",T).on("touchend.zoom touchcancel.zoom",E).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function _(t,n){return(n=Math.max(c[0],Math.min(c[1],n)))===t.k?t:new wb(n,t.x,t.y)}function b(t,n,e){var r=n[0]-e[0]*t.k,i=n[1]-e[1]*t.k;return r===t.x&&i===t.y?t:new wb(t.k,r,i)}function m(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function x(t,n,e){t.on("start.zoom",function(){w(this,arguments).start()}).on("interrupt.zoom end.zoom",function(){w(this,arguments).end()}).tween("zoom",function(){var t=arguments,r=w(this,t),o=i.apply(this,t),a=e||m(o),u=Math.max(o[1][0]-o[0][0],o[1][1]-o[0][1]),c=this.__zoom,f="function"==typeof n?n.apply(this,t):n,s=l(c.invert(a).concat(u/c.k),f.invert(a).concat(u/f.k));return function(t){if(1===t)t=f;else{var n=s(t),e=u/n[2];t=new wb(e,a[0]-n[0]*e,a[1]-n[1]*e)}r.zoom(null,t)}})}function w(t,n){for(var e,r=0,i=h.length;rg}n.zoom("mouse",o(b(n.that.__zoom,n.mouse[0]=Ot(n.that),n.mouse[1]),n.extent,f))},!0).on("mouseup.zoom",function(){i.on("mousemove.zoom mouseup.zoom",null),Ht(t.event.view,n.moved),kb(),n.end()},!0),a=Ot(this),u=t.event.clientX,c=t.event.clientY;It(t.event.view),Ab(),n.mouse=[a,this.__zoom.invert(a)],Mr(this),n.start()}}function k(){if(r.apply(this,arguments)){var n=this.__zoom,e=Ot(this),a=n.invert(e),u=n.k*(t.event.shiftKey?.5:2),c=o(b(_(n,u),e,a),i.apply(this,arguments),f);kb(),s>0?zt(this).transition().duration(s).call(x,c,e):zt(this).call(y.transform,c)}}function S(){if(r.apply(this,arguments)){var e,i,o,a,u=w(this,arguments),c=t.event.changedTouches,f=c.length;for(Ab(),i=0;in?1:t>=n?0:NaN}function e(t){return 1===t.length&&(t=function(t){return function(e,r){return n(t(e),r)}}(t)),{left:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r>>1;t(n[o],e)<0?r=o+1:i=o}return r},right:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r>>1;t(n[o],e)>0?i=o:r=o+1}return r}}}function r(t,n){return[t,n]}function i(t){return null===t?NaN:+t}function o(t,n){var e,r,o=t.length,u=0,a=-1,c=0,s=0;if(null==n)for(;++a1)return s/(u-1)}function u(t,n){var e=o(t,n);return e?Math.sqrt(e):e}function a(t,n){var e,r,i,o=t.length,u=-1;if(null==n){for(;++u=e)for(r=i=e;++ue&&(r=e),i=e)for(r=i=e;++ue&&(r=e),i0)return[t];if((r=n0)for(t=Math.ceil(t/u),n=Math.floor(n/u),o=new Array(i=Math.ceil(n-t+1));++a=0?(o>=Hs?10:o>=js?5:o>=Xs?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Hs?10:o>=js?5:o>=Xs?2:1)}function p(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=Hs?i*=10:o>=js?i*=5:o>=Xs&&(i*=2),n=1)return+e(t[r-1],r-1,t);var r,o=(r-1)*n,u=Math.floor(o),a=+e(t[u],u,t);return a+(+e(t[u+1],u+1,t)-a)*(o-u)}}function g(t){for(var n,e,r,i=t.length,o=-1,u=0;++o=0;)for(n=(r=t[i]).length;--n>=0;)e[--u]=r[n];return e}function _(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o=e)for(r=e;++oe&&(r=e)}else for(;++o=e)for(r=e;++oe&&(r=e);return r}function y(t){if(!(i=t.length))return[];for(var n=-1,e=_(t,m),r=new Array(e);++n=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),tf.hasOwnProperty(n)?{space:tf[n],local:t}:t}function A(t){var n=E(t);return(n.local?function(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}:function(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===Ks&&n.documentElement.namespaceURI===Ks?n.createElement(t):n.createElementNS(e,t)}})(n)}function C(){}function z(t){return null==t?C:function(){return this.querySelector(t)}}function P(){return[]}function R(t){return null==t?P:function(){return this.querySelectorAll(t)}}function L(t){return new Array(t.length)}function q(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}function D(t,n,e,r,i,o){for(var u,a=0,c=n.length,s=o.length;an?1:t>=n?0:NaN}function F(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function I(t,n){return t.style.getPropertyValue(n)||F(t).getComputedStyle(t,null).getPropertyValue(n)}function Y(t){return t.trim().split(/^|\s+/)}function B(t){return t.classList||new H(t)}function H(t){this._node=t,this._names=Y(t.getAttribute("class")||"")}function j(t,n){for(var e=B(t),r=-1,i=n.length;++r>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1)):(n=df.exec(t))?At(parseInt(n[1],16)):(n=vf.exec(t))?new Rt(n[1],n[2],n[3],1):(n=gf.exec(t))?new Rt(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=_f.exec(t))?Ct(n[1],n[2],n[3],n[4]):(n=yf.exec(t))?Ct(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=mf.exec(t))?Lt(n[1],n[2]/100,n[3]/100,1):(n=xf.exec(t))?Lt(n[1],n[2]/100,n[3]/100,n[4]):bf.hasOwnProperty(t)?At(bf[t]):"transparent"===t?new Rt(NaN,NaN,NaN,0):null}function At(t){return new Rt(t>>16&255,t>>8&255,255&t,1)}function Ct(t,n,e,r){return r<=0&&(t=n=e=NaN),new Rt(t,n,e,r)}function zt(t){return t instanceof St||(t=Et(t)),t?(t=t.rgb(),new Rt(t.r,t.g,t.b,t.opacity)):new Rt}function Pt(t,n,e,r){return 1===arguments.length?zt(t):new Rt(t,n,e,null==r?1:r)}function Rt(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function Lt(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new Dt(t,n,e,r)}function qt(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof Dt)return new Dt(t.h,t.s,t.l,t.opacity);if(t instanceof St||(t=Et(t)),!t)return new Dt;if(t instanceof Dt)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),u=NaN,a=o-i,c=(o+i)/2;return a?(u=n===o?(e-r)/a+6*(e0&&c<1?0:u,new Dt(u,a,c,t.opacity)}(t):new Dt(t,n,e,null==r?1:r)}function Dt(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Ut(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}function Ot(t){if(t instanceof It)return new It(t.l,t.a,t.b,t.opacity);if(t instanceof Vt){var n=t.h*wf;return new It(t.l,Math.cos(n)*t.c,Math.sin(n)*t.c,t.opacity)}t instanceof Rt||(t=zt(t));var e=jt(t.r),r=jt(t.g),i=jt(t.b),o=Yt((.4124564*e+.3575761*r+.1804375*i)/Tf),u=Yt((.2126729*e+.7151522*r+.072175*i)/Nf);return new It(116*u-16,500*(o-u),200*(u-Yt((.0193339*e+.119192*r+.9503041*i)/kf)),t.opacity)}function Ft(t,n,e,r){return 1===arguments.length?Ot(t):new It(t,n,e,null==r?1:r)}function It(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function Yt(t){return t>Cf?Math.pow(t,1/3):t/Af+Sf}function Bt(t){return t>Ef?t*t*t:Af*(t-Sf)}function Ht(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function jt(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Xt(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof Vt)return new Vt(t.h,t.c,t.l,t.opacity);t instanceof It||(t=Ot(t));var n=Math.atan2(t.b,t.a)*Mf;return new Vt(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}(t):new Vt(t,n,e,null==r?1:r)}function Vt(t,n,e,r){this.h=+t,this.c=+n,this.l=+e,this.opacity=+r}function $t(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof Wt)return new Wt(t.h,t.s,t.l,t.opacity);t instanceof Rt||(t=zt(t));var n=t.r/255,e=t.g/255,r=t.b/255,i=(Df*r+Lf*n-qf*e)/(Df+Lf-qf),o=r-i,u=(Rf*(e-i)-zf*o)/Pf,a=Math.sqrt(u*u+o*o)/(Rf*i*(1-i)),c=a?Math.atan2(u,o)*Mf-120:NaN;return new Wt(c<0?c+360:c,a,i,t.opacity)}(t):new Wt(t,n,e,null==r?1:r)}function Wt(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Zt(t,n,e,r,i){var o=t*t,u=o*t;return((1-3*t+3*o-u)*n+(4-6*o+3*u)*e+(1+3*t+3*o-3*u)*r+u*i)/6}function Gt(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],u=r>0?t[r-1]:2*i-o,a=r180||e<-180?e-360*Math.round(e/360):e):Jt(isNaN(t)?n:t)}function nn(t){return 1==(t=+t)?en:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):Jt(isNaN(n)?e:n)}}function en(t,n){var e=n-t;return e?Kt(t,e):Jt(isNaN(t)?n:t)}function rn(t){return function(n){var e,r,i=n.length,o=new Array(i),u=new Array(i),a=new Array(i);for(e=0;eo&&(i=n.slice(o,i),a[u]?a[u]+=i:a[++u]=i),(e=e[0])===(r=r[0])?a[u]?a[u]+=r:a[++u]=r:(a[++u]=null,c.push({i:u,x:an(e,r)})),o=$f.lastIndex;return o180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:an(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,u.rotate,a,c),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:an(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,u.skewX,a,c),function(t,n,e,r,o,u){if(t!==e||n!==r){var a=o.push(i(o)+"scale(",null,",",null,")");u.push({i:a-4,x:an(t,e)},{i:a-2,x:an(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,u.scaleX,u.scaleY,a,c),o=u=null,function(t){for(var n,e=-1,r=c.length;++e=0&&n._call.call(null,t),n=n._next;--cl}function Tn(){pl=(hl=vl.now())+dl,cl=sl=0;try{Mn()}finally{cl=0,function(){var t,n,e=Yf,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Yf=n);Bf=t,kn(r)}(),pl=0}}function Nn(){var t=vl.now(),n=t-hl;n>ll&&(dl-=n,hl=t)}function kn(t){if(!cl){sl&&(sl=clearTimeout(sl));t-pl>24?(t<1/0&&(sl=setTimeout(Tn,t-vl.now()-dl)),fl&&(fl=clearInterval(fl))):(fl||(hl=vl.now(),fl=setInterval(Nn,ll)),cl=1,gl(Tn))}}function Sn(t,n,e){var r=new bn;return n=null==n?0:+n,r.restart(function(e){r.stop(),t(e+n)},n,e),r}function En(t,n,e,r,i,o){var u=t.__transition;if(u){if(e in u)return}else t.__transition={};(function(t,n,e){function r(c){var s,f,l,h;if(e.state!==xl)return o();for(s in a)if((h=a[s]).name===e.name){if(h.state===wl)return Sn(r);h.state===Ml?(h.state=Nl,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete a[s]):+sml)throw new Error("too late; already scheduled");return e}function Cn(t,n){var e=zn(t,n);if(e.state>bl)throw new Error("too late; already started");return e}function zn(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function Pn(t,n){var e,r,i,o=t.__transition,u=!0;if(o){n=null==n?null:n+"";for(i in o)(e=o[i]).name===n?(r=e.state>bl&&e.stateMath.abs(t[1]-D[1])?b=!0:x=!0),D=t,m=!0,$n(),o()}function o(){var t;switch(_=D[0]-q[0],y=D[1]-q[1],T){case th:case Kl:N&&(_=Math.max(C-a,Math.min(P-p,_)),s=a+_,d=p+_),k&&(y=Math.max(z-l,Math.min(R-v,y)),h=l+y,g=v+y);break;case nh:N<0?(_=Math.max(C-a,Math.min(P-a,_)),s=a+_,d=p):N>0&&(_=Math.max(C-p,Math.min(P-p,_)),s=a,d=p+_),k<0?(y=Math.max(z-l,Math.min(R-l,y)),h=l+y,g=v):k>0&&(y=Math.max(z-v,Math.min(R-v,y)),h=l,g=v+y);break;case eh:N&&(s=Math.max(C,Math.min(P,a-_*N)),d=Math.max(C,Math.min(P,p+_*N))),k&&(h=Math.max(z,Math.min(R,l-y*k)),g=Math.max(z,Math.min(R,v+y*k)))}d0&&(a=s-_),k<0?v=g-y:k>0&&(l=h-y),T=th,F.attr("cursor",uh.selection),o());break;default:return}$n()},!0).on("keyup.brush",function(){switch(t.event.keyCode){case 16:L&&(x=b=L=!1,o());break;case 18:T===eh&&(N<0?p=d:N>0&&(a=s),k<0?v=g:k>0&&(l=h),T=nh,o());break;case 32:T===th&&(t.event.altKey?(N&&(p=d-_*N,a=s+_*N),k&&(v=g-y*k,l=h+y*k),T=eh):(N<0?p=d:N>0&&(a=s),k<0?v=g:k>0&&(l=h),T=nh),F.attr("cursor",uh[M]),o());break;default:return}$n()},!0).on("mousemove.brush",e,!0).on("mouseup.brush",u,!0);_t(t.event.view)}Vn(),Pn(w),r.call(w),U.start()}}function a(){var t=this.__brush||{selection:null};return t.extent=s.apply(this,arguments),t.dim=n,t}var c,s=Gn,f=Zn,l=N(e,"start","brush","end"),h=6;return e.move=function(t,e){t.selection?t.on("start.brush",function(){i(this,arguments).beforestart().start()}).on("interrupt.brush end.brush",function(){i(this,arguments).end()}).tween("brush",function(){function t(t){u.selection=1===t&&Jn(s)?null:f(t),r.call(o),a.brush()}var o=this,u=o.__brush,a=i(o,arguments),c=u.selection,s=n.input("function"==typeof e?e.apply(this,arguments):e,u.extent),f=fn(c,s);return c&&s?t:t(1)}):t.each(function(){var t=arguments,o=this.__brush,u=n.input("function"==typeof e?e.apply(this,t):e,o.extent),a=i(this,t).beforestart();Pn(this),o.selection=null==u||Jn(u)?null:u,r.call(this),a.start().brush().end()})},o.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(){return this.starting&&(this.starting=!1,this.emit("start")),this},brush:function(){return this.emit("brush"),this},end:function(){return 0==--this.active&&(delete this.state.emitter,this.emit("end")),this},emit:function(t){it(new function(t,n,e){this.target=t,this.type=n,this.selection=e}(e,t,n.output(this.state.selection)),l.apply,l,[t,this.that,this.args])}},e.extent=function(t){return arguments.length?(s="function"==typeof t?t:Xn([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),e):s},e.filter=function(t){return arguments.length?(f="function"==typeof t?t:Xn(!!t),e):f},e.handleSize=function(t){return arguments.length?(h=+t,e):h},e.on=function(){var t=l.on.apply(l,arguments);return t===l?e:t},e}function te(t){return function(){return t}}function ne(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function ee(){return new ne}function re(t){return t.source}function ie(t){return t.target}function oe(t){return t.radius}function ue(t){return t.startAngle}function ae(t){return t.endAngle}function ce(){}function se(t,n){var e=new ce;if(t instanceof ce)t.each(function(t,n){e.set(n,t)});else if(Array.isArray(t)){var r,i=-1,o=t.length;if(null==n)for(;++i=u?s=!0:(e=t.charCodeAt(a++))===Nh?f=!0:e===kh&&(f=!0,t.charCodeAt(a)===Nh&&++a),t.slice(r+1,n-1).replace(/""/g,'"')}for(;a=(o=(v+_)/2))?v=o:_=o,(f=e>=(u=(g+y)/2))?g=u:y=u,i=p,!(p=p[l=f<<1|s]))return i[l]=d,t;if(a=+t._x.call(null,p.data),c=+t._y.call(null,p.data),n===a&&e===c)return d.next=p,i?i[l]=d:t._root=d,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(s=n>=(o=(v+_)/2))?v=o:_=o,(f=e>=(u=(g+y)/2))?g=u:y=u}while((l=f<<1|s)==(h=(c>=u)<<1|a>=o));return i[h]=p,i[l]=d,t}function be(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i}function we(t){return t[0]}function Me(t){return t[1]}function Te(t,n,e){var r=new Ne(null==n?we:n,null==e?Me:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function Ne(t,n,e,r,i,o){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function ke(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}function Se(t){return t.x+t.vx}function Ee(t){return t.y+t.vy}function Ae(t){return t.index}function Ce(t,n){var e=t.get(n);if(!e)throw new Error("missing: "+n);return e}function ze(t){return t.x}function Pe(t){return t.y}function Re(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf("e"))<0)return null;var e,r=t.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+t.slice(e+1)]}function Le(t){return(t=Re(Math.abs(t)))?t[1]:NaN}function qe(t,n){var e=Re(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}function De(t){return new Ue(t)}function Ue(t){if(!(n=Bh.exec(t)))throw new Error("invalid format: "+t);var n,e=n[1]||" ",r=n[2]||">",i=n[3]||"-",o=n[4]||"",u=!!n[5],a=n[6]&&+n[6],c=!!n[7],s=n[8]&&+n[8].slice(1),f=n[9]||"";"n"===f?(c=!0,f="g"):Yh[f]||(f=""),(u||"0"===e&&"="===r)&&(u=!0,e="0",r="="),this.fill=e,this.align=r,this.sign=i,this.symbol=o,this.zero=u,this.width=a,this.comma=c,this.precision=s,this.type=f}function Oe(t){return t}function Fe(t){function n(t){function n(t){var n,r,u,f=g,x=_;if("c"===v)x=y(t)+x,t="";else{var b=(t=+t)<0;if(t=y(Math.abs(t),d),b&&0==+t&&(b=!1),f=(b?"("===s?s:"-":"-"===s||"("===s?"":s)+f,x=("s"===v?jh[8+Oh/3]:"")+x+(b&&"("===s?")":""),m)for(n=-1,r=t.length;++n(u=t.charCodeAt(n))||u>57){x=(46===u?i+t.slice(n+1):t.slice(n))+x,t=t.slice(0,n);break}}p&&!l&&(t=e(t,1/0));var w=f.length+t.length+x.length,M=w>1)+f+t+x+M.slice(w);break;default:t=M+f+t+x}return o(t)}var a=(t=De(t)).fill,c=t.align,s=t.sign,f=t.symbol,l=t.zero,h=t.width,p=t.comma,d=t.precision,v=t.type,g="$"===f?r[0]:"#"===f&&/[boxX]/.test(v)?"0"+v.toLowerCase():"",_="$"===f?r[1]:/[%p]/.test(v)?u:"",y=Yh[v],m=!v||/[defgprs%]/.test(v);return d=null==d?v?6:12:/[gprs]/.test(v)?Math.max(1,Math.min(21,d)):Math.max(0,Math.min(20,d)),n.toString=function(){return t+""},n}var e=t.grouping&&t.thousands?function(t,n){return function(e,r){for(var i=e.length,o=[],u=0,a=t[0],c=0;i>0&&a>0&&(c+a+1>r&&(a=Math.max(1,r-c)),o.push(e.substring(i-=a,i+a)),!((c+=a+1)>r));)a=t[u=(u+1)%t.length];return o.reverse().join(n)}}(t.grouping,t.thousands):Oe,r=t.currency,i=t.decimal,o=t.numerals?function(t){return function(n){return n.replace(/[0-9]/g,function(n){return t[+n]})}}(t.numerals):Oe,u=t.percent||"%";return{format:n,formatPrefix:function(t,e){var r=n((t=De(t),t.type="f",t)),i=3*Math.max(-8,Math.min(8,Math.floor(Le(e)/3))),o=Math.pow(10,-i),u=jh[8+i/3];return function(t){return r(o*t)+u}}}}function Ie(n){return Hh=Fe(n),t.format=Hh.format,t.formatPrefix=Hh.formatPrefix,Hh}function Ye(t){return Math.max(0,-Le(Math.abs(t)))}function Be(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Le(n)/3)))-Le(Math.abs(t)))}function He(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,Le(n)-Le(t))+1}function je(){return new Xe}function Xe(){this.reset()}function Ve(t,n,e){var r=t.s=n+e,i=r-n,o=r-i;t.t=n-o+(e-i)}function $e(t){return t>1?0:t<-1?Np:Math.acos(t)}function We(t){return t>1?kp:t<-1?-kp:Math.asin(t)}function Ze(t){return(t=Fp(t/2))*t}function Ge(){}function Qe(t,n){t&&jp.hasOwnProperty(t.type)&&jp[t.type](t,n)}function Je(t,n,e){var r,i=-1,o=t.length-e;for(n.lineStart();++i=0?1:-1,i=r*e,o=Lp(n),u=Fp(n),a=Zh*u,c=Wh*o+a*Lp(i),s=a*r*Fp(i);Xp.add(Rp(s,c)),$h=t,Wh=o,Zh=u}function or(t){return[Rp(t[1],t[0]),We(t[2])]}function ur(t){var n=t[0],e=t[1],r=Lp(e);return[r*Lp(n),r*Fp(n),Fp(e)]}function ar(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function cr(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function sr(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function fr(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function lr(t){var n=Yp(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}function hr(t,n){ip.push(op=[Gh=t,Jh=t]),nKh&&(Kh=n)}function pr(t,n){var e=ur([t*Cp,n*Cp]);if(rp){var r=cr(rp,e),i=cr([r[1],-r[0],0],r);lr(i),i=or(i);var o,u=t-tp,a=u>0?1:-1,c=i[0]*Ap*a,s=zp(u)>180;s^(a*tpKh&&(Kh=o):(c=(c+360)%360-180,s^(a*tpKh&&(Kh=n))),s?tmr(Gh,Jh)&&(Jh=t):mr(t,Jh)>mr(Gh,Jh)&&(Gh=t):Jh>=Gh?(tJh&&(Jh=t)):t>tp?mr(Gh,t)>mr(Gh,Jh)&&(Jh=t):mr(t,Jh)>mr(Gh,Jh)&&(Gh=t)}else ip.push(op=[Gh=t,Jh=t]);nKh&&(Kh=n),rp=e,tp=t}function dr(){Zp.point=pr}function vr(){op[0]=Gh,op[1]=Jh,Zp.point=hr,rp=null}function gr(t,n){if(rp){var e=t-tp;Wp.add(zp(e)>180?e+(e>0?360:-360):e)}else np=t,ep=n;$p.point(t,n),pr(t,n)}function _r(){$p.lineStart()}function yr(){gr(np,ep),$p.lineEnd(),zp(Wp)>Mp&&(Gh=-(Jh=180)),op[0]=Gh,op[1]=Jh,rp=null}function mr(t,n){return(n-=t)<0?n+360:n}function xr(t,n){return t[0]-n[0]}function br(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nNp?t-Ep:t<-Np?t+Ep:t,n]}function qr(t,n,e){return(t%=Ep)?n||e?Rr(Ur(t),Or(n,e)):Ur(t):n||e?Or(n,e):Lr}function Dr(t){return function(n,e){return n+=t,[n>Np?n-Ep:n<-Np?n+Ep:n,e]}}function Ur(t){var n=Dr(t);return n.invert=Dr(-t),n}function Or(t,n){function e(t,n){var e=Lp(n),a=Lp(t)*e,c=Fp(t)*e,s=Fp(n),f=s*r+a*i;return[Rp(c*o-f*u,a*r-s*i),We(f*o+c*u)]}var r=Lp(t),i=Fp(t),o=Lp(n),u=Fp(n);return e.invert=function(t,n){var e=Lp(n),a=Lp(t)*e,c=Fp(t)*e,s=Fp(n),f=s*o-c*u;return[Rp(c*o+s*u,a*r+f*i),We(f*r-a*i)]},e}function Fr(t){function n(n){return n=t(n[0]*Cp,n[1]*Cp),n[0]*=Ap,n[1]*=Ap,n}return t=qr(t[0]*Cp,t[1]*Cp,t.length>2?t[2]*Cp:0),n.invert=function(n){return n=t.invert(n[0]*Cp,n[1]*Cp),n[0]*=Ap,n[1]*=Ap,n},n}function Ir(t,n,e,r,i,o){if(e){var u=Lp(n),a=Fp(n),c=r*e;null==i?(i=n+r*Ep,o=n-c/2):(i=Yr(u,i),o=Yr(u,o),(r>0?io)&&(i+=r*Ep));for(var s,f=i;r>0?f>o:f1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function Hr(t,n){return zp(t[0]-n[0])=0;--o)i.point((f=s[o])[0],f[1]);else r(h.x,h.p.x,-1,i);h=h.p}s=(h=h.o).z,p=!p}while(!h.v);i.lineEnd()}}}function Vr(t){if(n=t.length){for(var n,e,r=0,i=t[0];++r
LOADING...
Select preset:
Displayed layers. Drag to move, click to toggle
Layers preset:
Displayed layers and layers order:
View mode:
Select element:
- Style preset: -
Toggle global filters:
Toggle filters:
- Map settings (new map to apply): -
- Generator settings: -
Generation options (new map to apply):
Generator settings:
Customize:
Heightmap customization:
Click to add:
Heightmap customization tools:
Options:
Statistics:
Cell info:
- Fantasy Map Generator is an - open source - tool by Azgaar. You may use auto-generated maps as they are, edit them or even create a new map from - scratch. Check out the - Quick start, Q&A, - Video tutorial, and - hotkeys for - guidance. -
- Join our Discord server and - Reddit community to ask - questions, get help and share maps. The created maps can be used for free, even for commercial purposes. -
- The project is under active development. Creator and main maintainer: Azgaar. To track the development - progress see the - devboard. For older - versions see the - changelog. - Please report bugs - here. You can also - contact me directly via email. -
- Special thanks to - all supporters on Patreon! -
Check out our other projects:
Fantasy Map Generator is an open source tool which procedurally generates fantasy maps. You may use auto-generated maps as they are, edit them or even create a map from scratch. Check out the quick start tutorial and project wiki for guidance. Join our Reddit Community if you have questions, need any help, have a suggestion or just want to share a created map.
The project is under active development. For older versions see the changelog. Some details are covered in my blog. To track the current progress see the devboard.
Please report bugs here. You may also send me an email.
- Google font. Open Google Fonts, find - a font you like and enter its name to the field below. -
- Local font. If you have a font - installed on your computer, just provide the font name. Make sure the browser is reloaded after the installation. The font won't work - on machines not having it installed. Good source of fonts are - Fontdesk and - DaFont. -
- Font URL. Provide font name and link to the font file hosted online. The best free font - hostings are Google Fonts and - CDN Fonts. To get font file open the link to css - provided by these services and manually copy the link to woff2 of desired variant. To add another - variant (e.g. Cyrillic), add the font one more time under the same name, but with another URL -
woff2
- Cell: X: Y: -
Latitude:
Longitude:
Geozone:
Area: 0
Type: n/a
Precipitation: 0
River: no
Population: 0
Elevation: 0
Depth: 0
Temperature: 0
Biome: n/a
State: n/a
Province: n/a
Culture: n/a
Religion: n/a
Burg: n/a
- This operation is destructive and irreversible. It will create a completely new map based on the current one. - Don't forget to save the .map file to your machine first! -
Generator uses pop-up window to download files. Please ensure your browser does not block popups.
- GeoJSON format is used in GIS tools such as QGIS. Check out - wiki-page - for guidance. -
Export in JSON format can be used as an API replacement.
- It's also possible to export map to Foundry VTT, see - the module. -
- Maps are saved in .map format, that can be loaded back via the Load in menu. There is no way to - restore the progress if file is lost. Please keep old save files on your machine or cloud storage as backups. -
Click on storage to open the last saved map.
- Or load from your Dropbox account - - Connect - -
Map will be split into tiles and downloaded as a single zip file. Avoid saving too large images
Warning!
Drop to upload
>>1;f[v]c-o){var _=(i*y+a*g)/r;t(n,d,g,i,o,_,c),t(d,e,y,_,o,a,c)}else{var b=(o*y+c*g)/r;t(n,d,g,i,o,a,b),t(d,e,y,i,b,a,c)}}(0,c,t.value,n,e,r,i)},t.treemapDice=Rl,t.treemapSlice=Xl,t.treemapSliceDice=function(t,n,e,r,i){(1&t.depth?Xl:Rl)(t,n,e,r,i)},t.treemapSquarify=$l,t.treemapResquarify=Wl,t.interpolate=ye,t.interpolateArray=se,t.interpolateBasis=Kn,t.interpolateBasisClosed=te,t.interpolateDate=le,t.interpolateDiscrete=function(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}},t.interpolateHue=function(t,n){var e=re(+t,+n);return function(t){var n=e(t);return n-360*Math.floor(n/360)}},t.interpolateNumber=he,t.interpolateObject=de,t.interpolateRound=_e,t.interpolateString=ge,t.interpolateTransformCss=Se,t.interpolateTransformSvg=Te,t.interpolateZoom=qe,t.interpolateRgb=ae,t.interpolateRgbBasis=ce,t.interpolateRgbBasisClosed=fe,t.interpolateHsl=Le,t.interpolateHslLong=Ue,t.interpolateLab=function(t,n){var e=oe((t=Rn(t)).l,(n=Rn(n)).l),r=oe(t.a,n.a),i=oe(t.b,n.b),o=oe(t.opacity,n.opacity);return function(n){return t.l=e(n),t.a=r(n),t.b=i(n),t.opacity=o(n),t+""}},t.interpolateHcl=Ye,t.interpolateHclLong=Be,t.interpolateCubehelix=Ie,t.interpolateCubehelixLong=He,t.piecewise=function(t,n){for(var e=0,r=n.length-1,i=n[0],o=new Array(r<0?0:r);e=0;--n)f.push(t[r[o[n]][2]]);for(n=+u;nu!=f>u&&a<(c-e)*(u-r)/(f-r)+e&&(s=!s),c=e,f=r;return s},t.polygonLength=function(t){for(var n,e,r=-1,i=t.length,o=t[i-1],a=o[0],u=o[1],c=0;++r0?a[n-1]:r[0],n=o?[a[o-1],r]:[a[n-1],a[n]]},c.unknown=function(t){return arguments.length?(n=t,c):c},c.thresholds=function(){return a.slice()},c.copy=function(){return t().domain([e,r]).range(u).unknown(n)},oh.apply(Nh(c),arguments)},t.scaleThreshold=function t(){var n,e=[.5],r=[0,1],o=1;function a(t){return t<=t?r[i(e,t,0,o)]:n}return a.domain=function(t){return arguments.length?(e=fh.call(t),o=Math.min(e.length,r.length-1),a):e.slice()},a.range=function(t){return arguments.length?(r=fh.call(t),o=Math.min(e.length,r.length-1),a):r.slice()},a.invertExtent=function(t){var n=r.indexOf(t);return[e[n-1],e[n]]},a.unknown=function(t){return arguments.length?(n=t,a):n},a.copy=function(){return t().domain(e).range(r).unknown(n)},oh.apply(a,arguments)},t.scaleTime=function(){return oh.apply(bv(bd,yd,rd,td,Jh,Zh,$h,jh,t.timeFormat).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},t.scaleUtc=function(){return oh.apply(bv(jd,Id,Td,Ad,Md,xd,$h,jh,t.utcFormat).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},t.scaleSequential=function t(){var n=Nh(mv()(vh));return n.copy=function(){return xv(n,t())},ah.apply(n,arguments)},t.scaleSequentialLog=function t(){var n=zh(mv()).domain([1,10]);return n.copy=function(){return xv(n,t()).base(n.base())},ah.apply(n,arguments)},t.scaleSequentialPow=wv,t.scaleSequentialSqrt=function(){return wv.apply(null,arguments).exponent(.5)},t.scaleSequentialSymlog=function t(){var n=Dh(mv());return n.copy=function(){return xv(n,t()).constant(n.constant())},ah.apply(n,arguments)},t.scaleSequentialQuantile=function t(){var e=[],r=vh;function o(t){if(!isNaN(t=+t))return r((i(e,t)-1)/(e.length-1))}return o.domain=function(t){if(!arguments.length)return e.slice();e=[];for(var r,i=0,a=t.length;i1)&&(t-=Math.floor(t));var n=Math.abs(t-.5);return Yg.h=360*t-100,Yg.s=1.5-1.5*n,Yg.l=.8-.9*n,Yg+""},t.interpolateWarm=Ug,t.interpolateCool=Og,t.interpolateSinebow=function(t){var n;return t=(.5-t)*Math.PI,Bg.r=255*(n=Math.sin(t))*n,Bg.g=255*(n=Math.sin(t+Fg))*n,Bg.b=255*(n=Math.sin(t+Ig))*n,Bg+""},t.interpolateViridis=jg,t.interpolateMagma=Xg,t.interpolateInferno=Gg,t.interpolatePlasma=Vg,t.create=function(t){return zt(W(t).call(document.documentElement))},t.creator=W,t.local=qt,t.matcher=tt,t.mouse=Ot,t.namespace=$,t.namespaces=V,t.clientPoint=Ut,t.select=zt,t.selectAll=function(t){return"string"==typeof t?new Ct([document.querySelectorAll(t)],[document.documentElement]):new Ct([null==t?[]:t],Et)},t.selection=Pt,t.selector=Q,t.selectorAll=K,t.style=ct,t.touch=Yt,t.touches=function(t,n){null==n&&(n=Lt().touches);for(var e=0,r=n?n.length:0,i=new Array(r);ed;if(u||(u=c=ji()),hey)if(v>oy-ey)u.moveTo(h*Qg(d),h*ty(d)),u.arc(0,0,h,d,p,!g),l>ey&&(u.moveTo(l*Qg(p),l*ty(p)),u.arc(0,0,l,p,d,g));else{var y,_,b=d,m=p,x=d,w=p,M=v,N=v,A=a.apply(this,arguments)/2,k=A>ey&&(r?+r.apply(this,arguments):ny(l*l+h*h)),S=Kg(Wg(h-l)/2,+e.apply(this,arguments)),T=S,E=S;if(k>ey){var C=ay(k/l*ty(A)),P=ay(k/h*ty(A));(M-=2*C)>ey?(x+=C*=g?1:-1,w-=C):(M=0,x=w=(d+p)/2),(N-=2*P)>ey?(b+=P*=g?1:-1,m-=P):(N=0,b=m=(d+p)/2)}var z=h*Qg(b),R=h*ty(b),q=l*Qg(w),D=l*ty(w);if(S>ey){var L,U=h*Qg(m),O=h*ty(m),Y=l*Qg(x),B=l*ty(x);if(v<=oy-ey&&(L=function(t,n,e,r,i,o,a,u){var c=e-t,f=r-n,s=a-i,l=u-o,h=l*c-s*f;if(!(h*h1?0:s<-1?ry:Math.acos(s))/2),G=ny(L[0]*L[0]+L[1]*L[1]);T=Kg(S,(l-G)/(X-1)),E=Kg(S,(h-G)/(X+1))}}N>ey?E>ey?(y=hy(Y,B,z,R,h,E,g),_=hy(U,O,q,D,h,E,g),u.moveTo(y.cx+y.x01,y.cy+y.y01),Eey&&M>ey?T>ey?(y=hy(q,D,U,O,l,-T,g),_=hy(z,R,Y,B,l,-T,g),u.lineTo(y.cx+y.x01,y.cy+y.y01),T0&&(d+=l);for(null!=n?p.sort(function(t,e){return n(v[t],v[e])}):null!=e&&p.sort(function(t,n){return e(a[t],a[n])}),u=0,f=d?(y-h*b)/d:0;u0?l*f:0)+b,v[c]={data:a[c],index:u,value:l,startAngle:g,endAngle:s,padAngle:_};return v}return a.value=function(n){return arguments.length?(t="function"==typeof n?n:$g(+n),a):t},a.sortValues=function(t){return arguments.length?(n=t,e=null,a):n},a.sort=function(t){return arguments.length?(e=t,n=null,a):e},a.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:$g(+t),a):r},a.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:$g(+t),a):i},a.padAngle=function(t){return arguments.length?(o="function"==typeof t?t:$g(+t),a):o},a},t.areaRadial=ky,t.radialArea=ky,t.lineRadial=Ay,t.radialLine=Ay,t.pointRadial=Sy,t.linkHorizontal=function(){return Py(zy)},t.linkVertical=function(){return Py(Ry)},t.linkRadial=function(){var t=Py(qy);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t},t.symbol=function(){var t=$g(Dy),n=$g(64),e=null;function r(){var r;if(e||(e=r=ji()),t.apply(this,arguments).draw(e,+n.apply(this,arguments)),r)return e=null,r+""||null}return r.type=function(n){return arguments.length?(t="function"==typeof n?n:$g(n),r):t},r.size=function(t){return arguments.length?(n="function"==typeof t?t:$g(+t),r):n},r.context=function(t){return arguments.length?(e=null==t?null:t,r):e},r},t.symbols=Qy,t.symbolCircle=Dy,t.symbolCross=Ly,t.symbolDiamond=Yy,t.symbolSquare=jy,t.symbolStar=Hy,t.symbolTriangle=Gy,t.symbolWye=Zy,t.curveBasisClosed=function(t){return new n_(t)},t.curveBasisOpen=function(t){return new e_(t)},t.curveBasis=function(t){return new t_(t)},t.curveBundle=i_,t.curveCardinalClosed=f_,t.curveCardinalOpen=l_,t.curveCardinal=u_,t.curveCatmullRomClosed=g_,t.curveCatmullRomOpen=__,t.curveCatmullRom=p_,t.curveLinearClosed=function(t){return new b_(t)},t.curveLinear=py,t.curveMonotoneX=function(t){return new N_(t)},t.curveMonotoneY=function(t){return new A_(t)},t.curveNatural=function(t){return new S_(t)},t.curveStep=function(t){return new E_(t,.5)},t.curveStepAfter=function(t){return new E_(t,1)},t.curveStepBefore=function(t){return new E_(t,0)},t.stack=function(){var t=$g([]),n=P_,e=C_,r=z_;function i(i){var o,a,u=t.apply(this,arguments),c=i.length,f=u.length,s=new Array(f);for(o=0;o0){for(var e,r,i,o=0,a=t[0].length;o1)for(var e,r,i,o,a,u,c=0,f=t[n[0]].length;c=0?(r[0]=o,r[1]=o+=i):i<0?(r[1]=a,r[0]=a+=i):r[0]=o},t.stackOffsetNone=C_,t.stackOffsetSilhouette=function(t,n){if((e=t.length)>0){for(var e,r=0,i=t[n[0]],o=i.length;r0&&(r=(e=t[n[0]]).length)>0){for(var e,r,i,o=0,a=1;adr&&e.name===n)return new Er([[t]],fi,n,+r);return null},t.interrupt=Mr,t.voronoi=function(){var t=O_,n=Y_,e=null;function r(r){return new bb(r.map(function(e,i){var o=[Math.round(t(e,i,r)/gb)*gb,Math.round(n(e,i,r)/gb)*gb];return o.index=i,o.data=e,o}),e)}return r.polygons=function(t){return r(t).polygons()},r.links=function(t){return r(t).links()},r.triangles=function(t){return r(t).triangles()},r.x=function(n){return arguments.length?(t="function"==typeof n?n:U_(+n),r):t},r.y=function(t){return arguments.length?(n="function"==typeof t?t:U_(+t),r):n},r.extent=function(t){return arguments.length?(e=null==t?null:[[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]],r):e&&[[e[0][0],e[0][1]],[e[1][0],e[1][1]]]},r.size=function(t){return arguments.length?(e=null==t?null:[[0,0],[+t[0],+t[1]]],r):e&&[e[1][0]-e[0][0],e[1][1]-e[0][1]]},r},t.zoom=function(){var n,e,r=Sb,i=Tb,o=zb,a=Cb,u=Pb,c=[0,1/0],f=[[-1/0,-1/0],[1/0,1/0]],s=250,l=qe,h=[],d=I("start","zoom","end"),p=500,v=150,g=0;function y(t){t.property("__zoom",Eb).on("wheel.zoom",N).on("mousedown.zoom",A).on("dblclick.zoom",k).filter(u).on("touchstart.zoom",S).on("touchmove.zoom",T).on("touchend.zoom touchcancel.zoom",E).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function _(t,n){return(n=Math.max(c[0],Math.min(c[1],n)))===t.k?t:new wb(n,t.x,t.y)}function b(t,n,e){var r=n[0]-e[0]*t.k,i=n[1]-e[1]*t.k;return r===t.x&&i===t.y?t:new wb(t.k,r,i)}function m(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function x(t,n,e){t.on("start.zoom",function(){w(this,arguments).start()}).on("interrupt.zoom end.zoom",function(){w(this,arguments).end()}).tween("zoom",function(){var t=arguments,r=w(this,t),o=i.apply(this,t),a=e||m(o),u=Math.max(o[1][0]-o[0][0],o[1][1]-o[0][1]),c=this.__zoom,f="function"==typeof n?n.apply(this,t):n,s=l(c.invert(a).concat(u/c.k),f.invert(a).concat(u/f.k));return function(t){if(1===t)t=f;else{var n=s(t),e=u/n[2];t=new wb(e,a[0]-n[0]*e,a[1]-n[1]*e)}r.zoom(null,t)}})}function w(t,n){for(var e,r=0,i=h.length;rg}n.zoom("mouse",o(b(n.that.__zoom,n.mouse[0]=Ot(n.that),n.mouse[1]),n.extent,f))},!0).on("mouseup.zoom",function(){i.on("mousemove.zoom mouseup.zoom",null),Ht(t.event.view,n.moved),kb(),n.end()},!0),a=Ot(this),u=t.event.clientX,c=t.event.clientY;It(t.event.view),Ab(),n.mouse=[a,this.__zoom.invert(a)],Mr(this),n.start()}}function k(){if(r.apply(this,arguments)){var n=this.__zoom,e=Ot(this),a=n.invert(e),u=n.k*(t.event.shiftKey?.5:2),c=o(b(_(n,u),e,a),i.apply(this,arguments),f);kb(),s>0?zt(this).transition().duration(s).call(x,c,e):zt(this).call(y.transform,c)}}function S(){if(r.apply(this,arguments)){var e,i,o,a,u=w(this,arguments),c=t.event.changedTouches,f=c.length;for(Ab(),i=0;in?1:t>=n?0:NaN}function e(t){return 1===t.length&&(t=function(t){return function(e,r){return n(t(e),r)}}(t)),{left:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r>>1;t(n[o],e)<0?r=o+1:i=o}return r},right:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r>>1;t(n[o],e)>0?i=o:r=o+1}return r}}}function r(t,n){return[t,n]}function i(t){return null===t?NaN:+t}function o(t,n){var e,r,o=t.length,u=0,a=-1,c=0,s=0;if(null==n)for(;++a1)return s/(u-1)}function u(t,n){var e=o(t,n);return e?Math.sqrt(e):e}function a(t,n){var e,r,i,o=t.length,u=-1;if(null==n){for(;++u=e)for(r=i=e;++ue&&(r=e),i=e)for(r=i=e;++ue&&(r=e),i0)return[t];if((r=n0)for(t=Math.ceil(t/u),n=Math.floor(n/u),o=new Array(i=Math.ceil(n-t+1));++a=0?(o>=Hs?10:o>=js?5:o>=Xs?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=Hs?10:o>=js?5:o>=Xs?2:1)}function p(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=Hs?i*=10:o>=js?i*=5:o>=Xs&&(i*=2),n=1)return+e(t[r-1],r-1,t);var r,o=(r-1)*n,u=Math.floor(o),a=+e(t[u],u,t);return a+(+e(t[u+1],u+1,t)-a)*(o-u)}}function g(t){for(var n,e,r,i=t.length,o=-1,u=0;++o=0;)for(n=(r=t[i]).length;--n>=0;)e[--u]=r[n];return e}function _(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o=e)for(r=e;++oe&&(r=e)}else for(;++o=e)for(r=e;++oe&&(r=e);return r}function y(t){if(!(i=t.length))return[];for(var n=-1,e=_(t,m),r=new Array(e);++n=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),tf.hasOwnProperty(n)?{space:tf[n],local:t}:t}function A(t){var n=E(t);return(n.local?function(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}:function(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===Ks&&n.documentElement.namespaceURI===Ks?n.createElement(t):n.createElementNS(e,t)}})(n)}function C(){}function z(t){return null==t?C:function(){return this.querySelector(t)}}function P(){return[]}function R(t){return null==t?P:function(){return this.querySelectorAll(t)}}function L(t){return new Array(t.length)}function q(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}function D(t,n,e,r,i,o){for(var u,a=0,c=n.length,s=o.length;an?1:t>=n?0:NaN}function F(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function I(t,n){return t.style.getPropertyValue(n)||F(t).getComputedStyle(t,null).getPropertyValue(n)}function Y(t){return t.trim().split(/^|\s+/)}function B(t){return t.classList||new H(t)}function H(t){this._node=t,this._names=Y(t.getAttribute("class")||"")}function j(t,n){for(var e=B(t),r=-1,i=n.length;++r>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1)):(n=df.exec(t))?At(parseInt(n[1],16)):(n=vf.exec(t))?new Rt(n[1],n[2],n[3],1):(n=gf.exec(t))?new Rt(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=_f.exec(t))?Ct(n[1],n[2],n[3],n[4]):(n=yf.exec(t))?Ct(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=mf.exec(t))?Lt(n[1],n[2]/100,n[3]/100,1):(n=xf.exec(t))?Lt(n[1],n[2]/100,n[3]/100,n[4]):bf.hasOwnProperty(t)?At(bf[t]):"transparent"===t?new Rt(NaN,NaN,NaN,0):null}function At(t){return new Rt(t>>16&255,t>>8&255,255&t,1)}function Ct(t,n,e,r){return r<=0&&(t=n=e=NaN),new Rt(t,n,e,r)}function zt(t){return t instanceof St||(t=Et(t)),t?(t=t.rgb(),new Rt(t.r,t.g,t.b,t.opacity)):new Rt}function Pt(t,n,e,r){return 1===arguments.length?zt(t):new Rt(t,n,e,null==r?1:r)}function Rt(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function Lt(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new Dt(t,n,e,r)}function qt(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof Dt)return new Dt(t.h,t.s,t.l,t.opacity);if(t instanceof St||(t=Et(t)),!t)return new Dt;if(t instanceof Dt)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),u=NaN,a=o-i,c=(o+i)/2;return a?(u=n===o?(e-r)/a+6*(e0&&c<1?0:u,new Dt(u,a,c,t.opacity)}(t):new Dt(t,n,e,null==r?1:r)}function Dt(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Ut(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}function Ot(t){if(t instanceof It)return new It(t.l,t.a,t.b,t.opacity);if(t instanceof Vt){var n=t.h*wf;return new It(t.l,Math.cos(n)*t.c,Math.sin(n)*t.c,t.opacity)}t instanceof Rt||(t=zt(t));var e=jt(t.r),r=jt(t.g),i=jt(t.b),o=Yt((.4124564*e+.3575761*r+.1804375*i)/Tf),u=Yt((.2126729*e+.7151522*r+.072175*i)/Nf);return new It(116*u-16,500*(o-u),200*(u-Yt((.0193339*e+.119192*r+.9503041*i)/kf)),t.opacity)}function Ft(t,n,e,r){return 1===arguments.length?Ot(t):new It(t,n,e,null==r?1:r)}function It(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function Yt(t){return t>Cf?Math.pow(t,1/3):t/Af+Sf}function Bt(t){return t>Ef?t*t*t:Af*(t-Sf)}function Ht(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function jt(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Xt(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof Vt)return new Vt(t.h,t.c,t.l,t.opacity);t instanceof It||(t=Ot(t));var n=Math.atan2(t.b,t.a)*Mf;return new Vt(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}(t):new Vt(t,n,e,null==r?1:r)}function Vt(t,n,e,r){this.h=+t,this.c=+n,this.l=+e,this.opacity=+r}function $t(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof Wt)return new Wt(t.h,t.s,t.l,t.opacity);t instanceof Rt||(t=zt(t));var n=t.r/255,e=t.g/255,r=t.b/255,i=(Df*r+Lf*n-qf*e)/(Df+Lf-qf),o=r-i,u=(Rf*(e-i)-zf*o)/Pf,a=Math.sqrt(u*u+o*o)/(Rf*i*(1-i)),c=a?Math.atan2(u,o)*Mf-120:NaN;return new Wt(c<0?c+360:c,a,i,t.opacity)}(t):new Wt(t,n,e,null==r?1:r)}function Wt(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Zt(t,n,e,r,i){var o=t*t,u=o*t;return((1-3*t+3*o-u)*n+(4-6*o+3*u)*e+(1+3*t+3*o-3*u)*r+u*i)/6}function Gt(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],u=r>0?t[r-1]:2*i-o,a=r180||e<-180?e-360*Math.round(e/360):e):Jt(isNaN(t)?n:t)}function nn(t){return 1==(t=+t)?en:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):Jt(isNaN(n)?e:n)}}function en(t,n){var e=n-t;return e?Kt(t,e):Jt(isNaN(t)?n:t)}function rn(t){return function(n){var e,r,i=n.length,o=new Array(i),u=new Array(i),a=new Array(i);for(e=0;eo&&(i=n.slice(o,i),a[u]?a[u]+=i:a[++u]=i),(e=e[0])===(r=r[0])?a[u]?a[u]+=r:a[++u]=r:(a[++u]=null,c.push({i:u,x:an(e,r)})),o=$f.lastIndex;return o180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:an(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,u.rotate,a,c),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:an(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,u.skewX,a,c),function(t,n,e,r,o,u){if(t!==e||n!==r){var a=o.push(i(o)+"scale(",null,",",null,")");u.push({i:a-4,x:an(t,e)},{i:a-2,x:an(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,u.scaleX,u.scaleY,a,c),o=u=null,function(t){for(var n,e=-1,r=c.length;++e=0&&n._call.call(null,t),n=n._next;--cl}function Tn(){pl=(hl=vl.now())+dl,cl=sl=0;try{Mn()}finally{cl=0,function(){var t,n,e=Yf,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Yf=n);Bf=t,kn(r)}(),pl=0}}function Nn(){var t=vl.now(),n=t-hl;n>ll&&(dl-=n,hl=t)}function kn(t){if(!cl){sl&&(sl=clearTimeout(sl));t-pl>24?(t<1/0&&(sl=setTimeout(Tn,t-vl.now()-dl)),fl&&(fl=clearInterval(fl))):(fl||(hl=vl.now(),fl=setInterval(Nn,ll)),cl=1,gl(Tn))}}function Sn(t,n,e){var r=new bn;return n=null==n?0:+n,r.restart(function(e){r.stop(),t(e+n)},n,e),r}function En(t,n,e,r,i,o){var u=t.__transition;if(u){if(e in u)return}else t.__transition={};(function(t,n,e){function r(c){var s,f,l,h;if(e.state!==xl)return o();for(s in a)if((h=a[s]).name===e.name){if(h.state===wl)return Sn(r);h.state===Ml?(h.state=Nl,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete a[s]):+sml)throw new Error("too late; already scheduled");return e}function Cn(t,n){var e=zn(t,n);if(e.state>bl)throw new Error("too late; already started");return e}function zn(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function Pn(t,n){var e,r,i,o=t.__transition,u=!0;if(o){n=null==n?null:n+"";for(i in o)(e=o[i]).name===n?(r=e.state>bl&&e.stateMath.abs(t[1]-D[1])?b=!0:x=!0),D=t,m=!0,$n(),o()}function o(){var t;switch(_=D[0]-q[0],y=D[1]-q[1],T){case th:case Kl:N&&(_=Math.max(C-a,Math.min(P-p,_)),s=a+_,d=p+_),k&&(y=Math.max(z-l,Math.min(R-v,y)),h=l+y,g=v+y);break;case nh:N<0?(_=Math.max(C-a,Math.min(P-a,_)),s=a+_,d=p):N>0&&(_=Math.max(C-p,Math.min(P-p,_)),s=a,d=p+_),k<0?(y=Math.max(z-l,Math.min(R-l,y)),h=l+y,g=v):k>0&&(y=Math.max(z-v,Math.min(R-v,y)),h=l,g=v+y);break;case eh:N&&(s=Math.max(C,Math.min(P,a-_*N)),d=Math.max(C,Math.min(P,p+_*N))),k&&(h=Math.max(z,Math.min(R,l-y*k)),g=Math.max(z,Math.min(R,v+y*k)))}d0&&(a=s-_),k<0?v=g-y:k>0&&(l=h-y),T=th,F.attr("cursor",uh.selection),o());break;default:return}$n()},!0).on("keyup.brush",function(){switch(t.event.keyCode){case 16:L&&(x=b=L=!1,o());break;case 18:T===eh&&(N<0?p=d:N>0&&(a=s),k<0?v=g:k>0&&(l=h),T=nh,o());break;case 32:T===th&&(t.event.altKey?(N&&(p=d-_*N,a=s+_*N),k&&(v=g-y*k,l=h+y*k),T=eh):(N<0?p=d:N>0&&(a=s),k<0?v=g:k>0&&(l=h),T=nh),F.attr("cursor",uh[M]),o());break;default:return}$n()},!0).on("mousemove.brush",e,!0).on("mouseup.brush",u,!0);_t(t.event.view)}Vn(),Pn(w),r.call(w),U.start()}}function a(){var t=this.__brush||{selection:null};return t.extent=s.apply(this,arguments),t.dim=n,t}var c,s=Gn,f=Zn,l=N(e,"start","brush","end"),h=6;return e.move=function(t,e){t.selection?t.on("start.brush",function(){i(this,arguments).beforestart().start()}).on("interrupt.brush end.brush",function(){i(this,arguments).end()}).tween("brush",function(){function t(t){u.selection=1===t&&Jn(s)?null:f(t),r.call(o),a.brush()}var o=this,u=o.__brush,a=i(o,arguments),c=u.selection,s=n.input("function"==typeof e?e.apply(this,arguments):e,u.extent),f=fn(c,s);return c&&s?t:t(1)}):t.each(function(){var t=arguments,o=this.__brush,u=n.input("function"==typeof e?e.apply(this,t):e,o.extent),a=i(this,t).beforestart();Pn(this),o.selection=null==u||Jn(u)?null:u,r.call(this),a.start().brush().end()})},o.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(){return this.starting&&(this.starting=!1,this.emit("start")),this},brush:function(){return this.emit("brush"),this},end:function(){return 0==--this.active&&(delete this.state.emitter,this.emit("end")),this},emit:function(t){it(new function(t,n,e){this.target=t,this.type=n,this.selection=e}(e,t,n.output(this.state.selection)),l.apply,l,[t,this.that,this.args])}},e.extent=function(t){return arguments.length?(s="function"==typeof t?t:Xn([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),e):s},e.filter=function(t){return arguments.length?(f="function"==typeof t?t:Xn(!!t),e):f},e.handleSize=function(t){return arguments.length?(h=+t,e):h},e.on=function(){var t=l.on.apply(l,arguments);return t===l?e:t},e}function te(t){return function(){return t}}function ne(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function ee(){return new ne}function re(t){return t.source}function ie(t){return t.target}function oe(t){return t.radius}function ue(t){return t.startAngle}function ae(t){return t.endAngle}function ce(){}function se(t,n){var e=new ce;if(t instanceof ce)t.each(function(t,n){e.set(n,t)});else if(Array.isArray(t)){var r,i=-1,o=t.length;if(null==n)for(;++i=u?s=!0:(e=t.charCodeAt(a++))===Nh?f=!0:e===kh&&(f=!0,t.charCodeAt(a)===Nh&&++a),t.slice(r+1,n-1).replace(/""/g,'"')}for(;a=(o=(v+_)/2))?v=o:_=o,(f=e>=(u=(g+y)/2))?g=u:y=u,i=p,!(p=p[l=f<<1|s]))return i[l]=d,t;if(a=+t._x.call(null,p.data),c=+t._y.call(null,p.data),n===a&&e===c)return d.next=p,i?i[l]=d:t._root=d,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(s=n>=(o=(v+_)/2))?v=o:_=o,(f=e>=(u=(g+y)/2))?g=u:y=u}while((l=f<<1|s)==(h=(c>=u)<<1|a>=o));return i[h]=p,i[l]=d,t}function be(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i}function we(t){return t[0]}function Me(t){return t[1]}function Te(t,n,e){var r=new Ne(null==n?we:n,null==e?Me:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function Ne(t,n,e,r,i,o){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function ke(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}function Se(t){return t.x+t.vx}function Ee(t){return t.y+t.vy}function Ae(t){return t.index}function Ce(t,n){var e=t.get(n);if(!e)throw new Error("missing: "+n);return e}function ze(t){return t.x}function Pe(t){return t.y}function Re(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf("e"))<0)return null;var e,r=t.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+t.slice(e+1)]}function Le(t){return(t=Re(Math.abs(t)))?t[1]:NaN}function qe(t,n){var e=Re(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}function De(t){return new Ue(t)}function Ue(t){if(!(n=Bh.exec(t)))throw new Error("invalid format: "+t);var n,e=n[1]||" ",r=n[2]||">",i=n[3]||"-",o=n[4]||"",u=!!n[5],a=n[6]&&+n[6],c=!!n[7],s=n[8]&&+n[8].slice(1),f=n[9]||"";"n"===f?(c=!0,f="g"):Yh[f]||(f=""),(u||"0"===e&&"="===r)&&(u=!0,e="0",r="="),this.fill=e,this.align=r,this.sign=i,this.symbol=o,this.zero=u,this.width=a,this.comma=c,this.precision=s,this.type=f}function Oe(t){return t}function Fe(t){function n(t){function n(t){var n,r,u,f=g,x=_;if("c"===v)x=y(t)+x,t="";else{var b=(t=+t)<0;if(t=y(Math.abs(t),d),b&&0==+t&&(b=!1),f=(b?"("===s?s:"-":"-"===s||"("===s?"":s)+f,x=("s"===v?jh[8+Oh/3]:"")+x+(b&&"("===s?")":""),m)for(n=-1,r=t.length;++n(u=t.charCodeAt(n))||u>57){x=(46===u?i+t.slice(n+1):t.slice(n))+x,t=t.slice(0,n);break}}p&&!l&&(t=e(t,1/0));var w=f.length+t.length+x.length,M=w>1)+f+t+x+M.slice(w);break;default:t=M+f+t+x}return o(t)}var a=(t=De(t)).fill,c=t.align,s=t.sign,f=t.symbol,l=t.zero,h=t.width,p=t.comma,d=t.precision,v=t.type,g="$"===f?r[0]:"#"===f&&/[boxX]/.test(v)?"0"+v.toLowerCase():"",_="$"===f?r[1]:/[%p]/.test(v)?u:"",y=Yh[v],m=!v||/[defgprs%]/.test(v);return d=null==d?v?6:12:/[gprs]/.test(v)?Math.max(1,Math.min(21,d)):Math.max(0,Math.min(20,d)),n.toString=function(){return t+""},n}var e=t.grouping&&t.thousands?function(t,n){return function(e,r){for(var i=e.length,o=[],u=0,a=t[0],c=0;i>0&&a>0&&(c+a+1>r&&(a=Math.max(1,r-c)),o.push(e.substring(i-=a,i+a)),!((c+=a+1)>r));)a=t[u=(u+1)%t.length];return o.reverse().join(n)}}(t.grouping,t.thousands):Oe,r=t.currency,i=t.decimal,o=t.numerals?function(t){return function(n){return n.replace(/[0-9]/g,function(n){return t[+n]})}}(t.numerals):Oe,u=t.percent||"%";return{format:n,formatPrefix:function(t,e){var r=n((t=De(t),t.type="f",t)),i=3*Math.max(-8,Math.min(8,Math.floor(Le(e)/3))),o=Math.pow(10,-i),u=jh[8+i/3];return function(t){return r(o*t)+u}}}}function Ie(n){return Hh=Fe(n),t.format=Hh.format,t.formatPrefix=Hh.formatPrefix,Hh}function Ye(t){return Math.max(0,-Le(Math.abs(t)))}function Be(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Le(n)/3)))-Le(Math.abs(t)))}function He(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,Le(n)-Le(t))+1}function je(){return new Xe}function Xe(){this.reset()}function Ve(t,n,e){var r=t.s=n+e,i=r-n,o=r-i;t.t=n-o+(e-i)}function $e(t){return t>1?0:t<-1?Np:Math.acos(t)}function We(t){return t>1?kp:t<-1?-kp:Math.asin(t)}function Ze(t){return(t=Fp(t/2))*t}function Ge(){}function Qe(t,n){t&&jp.hasOwnProperty(t.type)&&jp[t.type](t,n)}function Je(t,n,e){var r,i=-1,o=t.length-e;for(n.lineStart();++i=0?1:-1,i=r*e,o=Lp(n),u=Fp(n),a=Zh*u,c=Wh*o+a*Lp(i),s=a*r*Fp(i);Xp.add(Rp(s,c)),$h=t,Wh=o,Zh=u}function or(t){return[Rp(t[1],t[0]),We(t[2])]}function ur(t){var n=t[0],e=t[1],r=Lp(e);return[r*Lp(n),r*Fp(n),Fp(e)]}function ar(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function cr(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function sr(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function fr(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function lr(t){var n=Yp(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}function hr(t,n){ip.push(op=[Gh=t,Jh=t]),nKh&&(Kh=n)}function pr(t,n){var e=ur([t*Cp,n*Cp]);if(rp){var r=cr(rp,e),i=cr([r[1],-r[0],0],r);lr(i),i=or(i);var o,u=t-tp,a=u>0?1:-1,c=i[0]*Ap*a,s=zp(u)>180;s^(a*tpKh&&(Kh=o):(c=(c+360)%360-180,s^(a*tpKh&&(Kh=n))),s?tmr(Gh,Jh)&&(Jh=t):mr(t,Jh)>mr(Gh,Jh)&&(Gh=t):Jh>=Gh?(tJh&&(Jh=t)):t>tp?mr(Gh,t)>mr(Gh,Jh)&&(Jh=t):mr(t,Jh)>mr(Gh,Jh)&&(Gh=t)}else ip.push(op=[Gh=t,Jh=t]);nKh&&(Kh=n),rp=e,tp=t}function dr(){Zp.point=pr}function vr(){op[0]=Gh,op[1]=Jh,Zp.point=hr,rp=null}function gr(t,n){if(rp){var e=t-tp;Wp.add(zp(e)>180?e+(e>0?360:-360):e)}else np=t,ep=n;$p.point(t,n),pr(t,n)}function _r(){$p.lineStart()}function yr(){gr(np,ep),$p.lineEnd(),zp(Wp)>Mp&&(Gh=-(Jh=180)),op[0]=Gh,op[1]=Jh,rp=null}function mr(t,n){return(n-=t)<0?n+360:n}function xr(t,n){return t[0]-n[0]}function br(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nNp?t-Ep:t<-Np?t+Ep:t,n]}function qr(t,n,e){return(t%=Ep)?n||e?Rr(Ur(t),Or(n,e)):Ur(t):n||e?Or(n,e):Lr}function Dr(t){return function(n,e){return n+=t,[n>Np?n-Ep:n<-Np?n+Ep:n,e]}}function Ur(t){var n=Dr(t);return n.invert=Dr(-t),n}function Or(t,n){function e(t,n){var e=Lp(n),a=Lp(t)*e,c=Fp(t)*e,s=Fp(n),f=s*r+a*i;return[Rp(c*o-f*u,a*r-s*i),We(f*o+c*u)]}var r=Lp(t),i=Fp(t),o=Lp(n),u=Fp(n);return e.invert=function(t,n){var e=Lp(n),a=Lp(t)*e,c=Fp(t)*e,s=Fp(n),f=s*o-c*u;return[Rp(c*o+s*u,a*r+f*i),We(f*r-a*i)]},e}function Fr(t){function n(n){return n=t(n[0]*Cp,n[1]*Cp),n[0]*=Ap,n[1]*=Ap,n}return t=qr(t[0]*Cp,t[1]*Cp,t.length>2?t[2]*Cp:0),n.invert=function(n){return n=t.invert(n[0]*Cp,n[1]*Cp),n[0]*=Ap,n[1]*=Ap,n},n}function Ir(t,n,e,r,i,o){if(e){var u=Lp(n),a=Fp(n),c=r*e;null==i?(i=n+r*Ep,o=n-c/2):(i=Yr(u,i),o=Yr(u,o),(r>0?io)&&(i+=r*Ep));for(var s,f=i;r>0?f>o:f1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function Hr(t,n){return zp(t[0]-n[0])=0;--o)i.point((f=s[o])[0],f[1]);else r(h.x,h.p.x,-1,i);h=h.p}s=(h=h.o).z,p=!p}while(!h.v);i.lineEnd()}}}function Vr(t){if(n=t.length){for(var n,e,r=0,i=t[0];++r