aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhellekin <hellekin@cepheide.org>2020-11-12 01:10:28 +0100
committerhellekin <hellekin@cepheide.org>2020-11-12 01:10:28 +0100
commit8d9387cf64929b6467b6ba52f22ca0aa5ed35782 (patch)
tree37533e75476680ebad4cd1d47e3e578b879726ba
parentb6aeac4d9274f17e748efb3715aa08f4b7c361f2 (diff)
parent757decefafb5d82557a8b7fa9691f94f19c3207e (diff)
downloadincommon-map-8d9387cf64929b6467b6ba52f22ca0aa5ed35782.tar.gz
Merged master
-rw-r--r--.reuse/dep549
-rw-r--r--Gemfile2
-rw-r--r--Gemfile.lock5
-rw-r--r--LICENSES/AGPL-3.0-or-later.txt613
-rw-r--r--LICENSES/CC-BY-SA-4.0.txt350
-rw-r--r--LICENSES/CC0-1.0.txt119
-rw-r--r--LICENSES/LAL-1.3.txt183
-rw-r--r--LICENSES/MIT.txt19
-rw-r--r--LICENSES/ODC-By-1.0.txt398
-rw-r--r--LICENSES/ODbL-1.0.txt500
-rw-r--r--README.md6
-rw-r--r--app/assets/stylesheets/agents.scss9
-rw-r--r--app/assets/stylesheets/application/_body.scss5
-rw-r--r--app/assets/stylesheets/application/_debug.scss6
-rw-r--r--app/assets/stylesheets/application/_flash.scss6
-rw-r--r--app/assets/stylesheets/application/_header.scss6
-rw-r--r--app/assets/stylesheets/application/_map.scss6
-rw-r--r--app/assets/stylesheets/application/_user_info.scss6
-rw-r--r--app/assets/stylesheets/categories.scss9
-rw-r--r--app/assets/stylesheets/resources.scss6
-rw-r--r--app/assets/stylesheets/taxonomies.scss82
-rw-r--r--app/assets/stylesheets/users.scss6
-rw-r--r--app/assets/stylesheets/welcome.scss6
-rw-r--r--app/controllers/agents_controller.rb91
-rw-r--r--app/controllers/application_controller.rb6
-rw-r--r--app/controllers/categories_controller.rb23
-rw-r--r--app/controllers/my/agent_controller.rb4
-rw-r--r--app/controllers/resources_controller.rb4
-rw-r--r--app/controllers/users_controller.rb4
-rw-r--r--app/controllers/welcome_controller.rb4
-rw-r--r--app/helpers/agents_helper.rb4
-rw-r--r--app/helpers/application_helper.rb47
-rw-r--r--app/helpers/categories_helper.rb6
-rw-r--r--app/helpers/resources_helper.rb4
-rw-r--r--app/helpers/taxonomies_helper.rb23
-rw-r--r--app/helpers/users_helper.rb4
-rw-r--r--app/helpers/welcome_helper.rb4
-rw-r--r--app/jobs/agency_watcher_job.rb4
-rw-r--r--app/jobs/application_job.rb4
-rw-r--r--app/lib/incommon.rb6
-rw-r--r--app/lib/sso.rb4
-rw-r--r--app/lib/sso/from_discourse.rb4
-rw-r--r--app/mailers/application_mailer.rb4
-rw-r--r--app/models/agency.rb4
-rw-r--r--app/models/agent.rb4
-rw-r--r--app/models/application_record.rb4
-rw-r--r--app/models/category.rb4
-rw-r--r--app/models/classification.rb4
-rw-r--r--app/models/resource.rb4
-rw-r--r--app/models/schemas/resource_feature_properties.json4
-rw-r--r--app/models/section.rb4
-rw-r--r--app/models/taxonomy.rb4
-rw-r--r--app/models/user.rb4
-rw-r--r--app/validators/email_validator.rb33
-rw-r--r--app/validators/url_validator.rb33
-rw-r--r--app/views/application/_current_agent_link.html.erb1
-rw-r--r--app/views/application/_current_agent_switch.html.erb4
-rw-r--r--app/views/application/_taxonomy_nav.html.erb6
-rw-r--r--app/views/resources/_resource.html.erb2
-rw-r--r--config/database.yml4
-rw-r--r--config/initializers/inflections.rb5
-rw-r--r--config/initializers/kaminari_config.rb4
-rw-r--r--config/initializers/sso_config.rb4
-rw-r--r--config/locales/en.yml4
-rw-r--r--config/puma.rb4
-rw-r--r--config/routes.rb3
-rw-r--r--doc/import/Concertes/How to read files.txt4
-rw-r--r--doc/import/LocationsParser.rb28
-rw-r--r--doc/import/README.md6
-rw-r--r--doc/import/dewey-maps-categories-en.json526
-rw-r--r--doc/import/parser.rb4
-rw-r--r--public/favicon.pngbin0 -> 1323 bytes
-rw-r--r--public/favicon.svg82
-rw-r--r--public/icon-menu-off.b64.uri1
-rw-r--r--public/icon-menu-on.b64.uri1
75 files changed, 3441 insertions, 9 deletions
diff --git a/.reuse/dep5 b/.reuse/dep5
new file mode 100644
index 0000000..e417ab4
--- /dev/null
+++ b/.reuse/dep5
@@ -0,0 +1,49 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: incommon-map
+Upstream-Contact: IN COMMON Collective <collective@incommon.cc>
+Source: https://framagit.org/incommon.cc/incommon-map/
+
+## Default Rails files (see https://rubyonrails.org)
+
+Files: .browserslistrc .gitignore .ruby-version config.ru Gemfile Gemfile.lock Rakefile README.md app/assets/config/manifest.js app/assets/stylesheets/application.css app/javascript/packs/application.js app/jobs/application_jobs.rb app-mailers/application_mailer.rb app/models/application_record.rb app/views/layouts/application.html.erb app/views/layouts/mailer.html.erb app/views/layouts/mailer.text.erb bin/* config/routes.rb config/application.rb config/boot.rb config/environment.rb config/environments/*.rb config/initializers/application_controller_renderer.rb config/initializers/assets.rb config/initializers/backtrace_silencers.rb config/initializers/content_security_policy.rb config/initializers/cookies_serializer.rb config/initializers/filter_parameter_logging.rb config/initializers/mime_types.rb config/initializers/session_store.rb config/initializers/wrap_parameters.rb config/puma.rb config/spring.rb config/storage.yml config/webpack/*.js config/webpacker.yml babel.config.js postcss.config.js
+Copyright: 2004-2020 David Heinemeier Hansson
+Comment: These are default Ruby on Rails files.
+License: MIT
+
+## "Proprietary" files (unfit for packaging)
+
+Files: config/credentials.yml.enc
+Copyright: 2020 IN COMMON Collective <collective@incommon.cc>
+Comment: This is an encrypted file generated by `rails credentials:edit`: you should replace it with your own!
+License: CC0-1.0
+
+## Insignificant files
+
+Files: *.lock .gitignore
+Copyright: 2020 IN COMMON Collective <collective@incommon.cc>
+License: CC0-1.0
+
+## IN COMMON content files
+
+Files: *.json public/*.* app/assets/images/* doc/import/*.csv
+Copyright: 2020 IN COMMON Collective <collective@incommon.cc>
+License: LAL-1.3
+
+Files: app/views/*
+Copyright: 2020 IN COMMON Collective <collective@incommon.cc>
+License: AGPL-3.0-or-later
+
+Files: db/migrate/*.rb db/schema.rb db/schema.sql
+Copyright: 2017-2020 IN COMMON Collective <collective@incommon.cc>
+License: ODbL-1.0
+
+Files: db/seeds.rb
+Copyright: 2017-2020 IN COMMON Collective <collective@incommon.cc>
+License: ODC-By-1.0
+
+Files: doc/*.adoc doc/*.md
+Copyright: 2020 IN COMMON Collective <collective@incommon.cc>
+License: CC-BY-SA-4.0
+
+# Other files are code released under AGPL-3.0-or-later unless specified
+# otherwise.
diff --git a/Gemfile b/Gemfile
index 1897dd4..f094cc3 100644
--- a/Gemfile
+++ b/Gemfile
@@ -28,6 +28,8 @@ gem 'jbuilder', '~> 2.7'
gem 'acts_as_list'
# Use bitfields in models
gem 'bitfields'
+# Use Markdown for descriptions
+gem 'commonmarker'
# Use Discourse API
gem 'discourse_api'
# User pagination
diff --git a/Gemfile.lock b/Gemfile.lock
index aa16165..9d940e0 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -66,6 +66,8 @@ GEM
builder (3.2.4)
byebug (11.1.3)
coderay (1.1.3)
+ commonmarker (0.21.0)
+ ruby-enum (~> 0.5)
concurrent-ruby (1.1.7)
crass (1.0.6)
discourse_api (0.42.0)
@@ -170,6 +172,8 @@ GEM
rb-fsevent (0.10.4)
rb-inotify (0.10.1)
ffi (~> 1.0)
+ ruby-enum (0.8.0)
+ i18n
sass-rails (6.0.0)
sassc-rails (~> 2.1, >= 2.1.1)
sassc (2.4.0)
@@ -226,6 +230,7 @@ DEPENDENCIES
bitfields
bootsnap (>= 1.4.2)
byebug
+ commonmarker
discourse_api
jbuilder (~> 2.7)
kaminari
diff --git a/LICENSES/AGPL-3.0-or-later.txt b/LICENSES/AGPL-3.0-or-later.txt
new file mode 100644
index 0000000..fe0ef42
--- /dev/null
+++ b/LICENSES/AGPL-3.0-or-later.txt
@@ -0,0 +1,613 @@
+GNU AFFERO GENERAL PUBLIC LICENSE
+
+Version 3, 19 November 2007
+
+Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+Preamble
+
+The GNU Affero General Public License is a free, copyleft license for software
+and other kinds of works, specifically designed to ensure cooperation with
+the community in the case of network server software.
+
+The licenses for most software and other practical works are designed to take
+away your freedom to share and change the works. By contrast, our General
+Public Licenses are 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.
+
+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.
+
+Developers that use our General Public Licenses protect your rights with two
+steps: (1) assert copyright on the software, and (2) offer you this License
+which gives you legal permission to copy, distribute and/or modify the software.
+
+A secondary benefit of defending all users' freedom is that improvements made
+in alternate versions of the program, if they receive widespread use, become
+available for other developers to incorporate. Many developers of free software
+are heartened and encouraged by the resulting cooperation. However, in the
+case of software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and letting
+the public access it on a server without ever releasing its source code to
+the public.
+
+The GNU Affero General Public License is designed specifically to ensure that,
+in such cases, the modified source code becomes available to the community.
+It requires the operator of a network server to provide the source code of
+the modified version running there to the users of that server. Therefore,
+public use of a modified version, on a publicly accessible server, gives the
+public access to the source code of the modified version.
+
+An older license, called the Affero General Public License and published by
+Affero, was designed to accomplish similar goals. This is a different license,
+not a version of the Affero GPL, but Affero has released a new version of
+the Affero GPL which permits relicensing under this license.
+
+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 Affero 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. Remote Network Interaction; Use with the GNU General Public License.
+
+Notwithstanding any other provision of this License, if you modify the Program,
+your modified version must prominently offer all users interacting with it
+remotely through a computer network (if your version supports such interaction)
+an opportunity to receive the Corresponding Source of your version by providing
+access to the Corresponding Source from a network server at no charge, through
+some standard or customary means of facilitating copying of software. This
+Corresponding Source shall include the Corresponding Source for any work covered
+by version 3 of the GNU General Public License that is incorporated pursuant
+to the following paragraph.
+
+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 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 work with which it is combined will remain
+governed by version 3 of the GNU General Public License.
+
+ 14. Revised Versions of this License.
+
+The Free Software Foundation may publish revised and/or new versions of the
+GNU Affero 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 Affero 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 Affero 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 Affero 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.
+
+<one line to give the program's name and a brief idea of what it does.>
+
+Copyright (C) <year> <name of author>
+
+This program is free software: you can redistribute it and/or modify it under
+the terms of the GNU Affero 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 Affero General Public License for more
+details.
+
+You should have received a copy of the GNU Affero General Public License along
+with this program. If not, see <https://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If your software can interact with users remotely through a computer network,
+you should also make sure that it provides a way for users to get its source.
+For example, if your program is a web application, its interface could display
+a "Source" link that leads users to an archive of the code. There are many
+ways you could offer source, and different solutions will be better for different
+programs; see section 13 for the specific requirements.
+
+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 AGPL, see <https://www.gnu.org/licenses/>.
diff --git a/LICENSES/CC-BY-SA-4.0.txt b/LICENSES/CC-BY-SA-4.0.txt
new file mode 100644
index 0000000..f50cdd3
--- /dev/null
+++ b/LICENSES/CC-BY-SA-4.0.txt
@@ -0,0 +1,350 @@
+Creative Commons Attribution-ShareAlike 4.0 International Creative Commons
+Corporation ("Creative Commons") is not a law firm and does not provide legal
+services or legal advice. Distribution of Creative Commons public licenses
+does not create a lawyer-client or other relationship. Creative Commons makes
+its licenses and related information available on an "as-is" basis. Creative
+Commons gives no warranties regarding its licenses, any material licensed
+under their terms and conditions, or any related information. Creative Commons
+disclaims all liability for damages resulting from their use to the fullest
+extent possible.
+
+Using Creative Commons Public Licenses
+
+Creative Commons public licenses provide a standard set of terms and conditions
+that creators and other rights holders may use to share original works of
+authorship and other material subject to copyright and certain other rights
+specified in the public license below. The following considerations are for
+informational purposes only, are not exhaustive, and do not form part of our
+licenses.
+
+Considerations for licensors: Our public licenses are intended for use by
+those authorized to give the public permission to use material in ways otherwise
+restricted by copyright and certain other rights. Our licenses are irrevocable.
+Licensors should read and understand the terms and conditions of the license
+they choose before applying it. Licensors should also secure all rights necessary
+before applying our licenses so that the public can reuse the material as
+expected. Licensors should clearly mark any material not subject to the license.
+This includes other CC-licensed material, or material used under an exception
+or limitation to copyright. More considerations for licensors : wiki.creativecommons.org/Considerations_for_licensors
+
+Considerations for the public: By using one of our public licenses, a licensor
+grants the public permission to use the licensed material under specified
+terms and conditions. If the licensor's permission is not necessary for any
+reason–for example, because of any applicable exception or limitation to copyright–then
+that use is not regulated by the license. Our licenses grant only permissions
+under copyright and certain other rights that a licensor has authority to
+grant. Use of the licensed material may still be restricted for other reasons,
+including because others have copyright or other rights in the material. A
+licensor may make special requests, such as asking that all changes be marked
+or described.
+
+Although not required by our licenses, you are encouraged to respect those
+requests where reasonable. More considerations for the public : wiki.creativecommons.org/Considerations_for_licensees
+
+Creative Commons Attribution-ShareAlike 4.0 International Public License
+
+By exercising the Licensed Rights (defined below), You accept and agree to
+be bound by the terms and conditions of this Creative Commons Attribution-ShareAlike
+4.0 International Public License ("Public License"). To the extent this Public
+License may be interpreted as a contract, You are granted the Licensed Rights
+in consideration of Your acceptance of these terms and conditions, and the
+Licensor grants You such rights in consideration of benefits the Licensor
+receives from making the Licensed Material available under these terms and
+conditions.
+
+Section 1 – Definitions.
+
+a. Adapted Material means material subject to Copyright and Similar Rights
+that is derived from or based upon the Licensed Material and in which the
+Licensed Material is translated, altered, arranged, transformed, or otherwise
+modified in a manner requiring permission under the Copyright and Similar
+Rights held by the Licensor. For purposes of this Public License, where the
+Licensed Material is a musical work, performance, or sound recording, Adapted
+Material is always produced where the Licensed Material is synched in timed
+relation with a moving image.
+
+b. Adapter's License means the license You apply to Your Copyright and Similar
+Rights in Your contributions to Adapted Material in accordance with the terms
+and conditions of this Public License.
+
+c. BY-SA Compatible License means a license listed at creativecommons.org/compatiblelicenses,
+approved by Creative Commons as essentially the equivalent of this Public
+License.
+
+d. Copyright and Similar Rights means copyright and/or similar rights closely
+related to copyright including, without limitation, performance, broadcast,
+sound recording, and Sui Generis Database Rights, without regard to how the
+rights are labeled or categorized. For purposes of this Public License, the
+rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
+
+e. Effective Technological Measures means those measures that, in the absence
+of proper authority, may not be circumvented under laws fulfilling obligations
+under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996,
+and/or similar international agreements.
+
+f. Exceptions and Limitations means fair use, fair dealing, and/or any other
+exception or limitation to Copyright and Similar Rights that applies to Your
+use of the Licensed Material.
+
+g. License Elements means the license attributes listed in the name of a Creative
+Commons Public License. The License Elements of this Public License are Attribution
+and ShareAlike.
+
+h. Licensed Material means the artistic or literary work, database, or other
+material to which the Licensor applied this Public License.
+
+i. Licensed Rights means the rights granted to You subject to the terms and
+conditions of this Public License, which are limited to all Copyright and
+Similar Rights that apply to Your use of the Licensed Material and that the
+Licensor has authority to license.
+
+j. Licensor means the individual(s) or entity(ies) granting rights under this
+Public License.
+
+k. Share means to provide material to the public by any means or process that
+requires permission under the Licensed Rights, such as reproduction, public
+display, public performance, distribution, dissemination, communication, or
+importation, and to make material available to the public including in ways
+that members of the public may access the material from a place and at a time
+individually chosen by them.
+
+l. Sui Generis Database Rights means rights other than copyright resulting
+from Directive 96/9/EC of the European Parliament and of the Council of 11
+March 1996 on the legal protection of databases, as amended and/or succeeded,
+as well as other essentially equivalent rights anywhere in the world.
+
+m. You means the individual or entity exercising the Licensed Rights under
+this Public License. Your has a corresponding meaning.
+
+Section 2 – Scope.
+
+ a. License grant.
+
+1. Subject to the terms and conditions of this Public License, the Licensor
+hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive,
+irrevocable license to exercise the Licensed Rights in the Licensed Material
+to:
+
+ A. reproduce and Share the Licensed Material, in whole or in part; and
+
+ B. produce, reproduce, and Share Adapted Material.
+
+2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions
+and Limitations apply to Your use, this Public License does not apply, and
+You do not need to comply with its terms and conditions.
+
+ 3. Term. The term of this Public License is specified in Section 6(a).
+
+4. Media and formats; technical modifications allowed. The Licensor authorizes
+You to exercise the Licensed Rights in all media and formats whether now known
+or hereafter created, and to make technical modifications necessary to do
+so. The Licensor waives and/or agrees not to assert any right or authority
+to forbid You from making technical modifications necessary to exercise the
+Licensed Rights, including technical modifications necessary to circumvent
+Effective Technological Measures. For purposes of this Public License, simply
+making modifications authorized by this Section 2(a)(4) never produces Adapted
+Material.
+
+ 5. Downstream recipients.
+
+A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed
+Material automatically receives an offer from the Licensor to exercise the
+Licensed Rights under the terms and conditions of this Public License.
+
+B. Additional offer from the Licensor – Adapted Material. Every recipient
+of Adapted Material from You automatically receives an offer from the Licensor
+to exercise the Licensed Rights in the Adapted Material under the conditions
+of the Adapter's License You apply.
+
+C. No downstream restrictions. You may not offer or impose any additional
+or different terms or conditions on, or apply any Effective Technological
+Measures to, the Licensed Material if doing so restricts exercise of the Licensed
+Rights by any recipient of the Licensed Material.
+
+6. No endorsement. Nothing in this Public License constitutes or may be construed
+as permission to assert or imply that You are, or that Your use of the Licensed
+Material is, connected with, or sponsored, endorsed, or granted official status
+by, the Licensor or others designated to receive attribution as provided in
+Section 3(a)(1)(A)(i).
+
+ b. Other rights.
+
+1. Moral rights, such as the right of integrity, are not licensed under this
+Public License, nor are publicity, privacy, and/or other similar personality
+rights; however, to the extent possible, the Licensor waives and/or agrees
+not to assert any such rights held by the Licensor to the limited extent necessary
+to allow You to exercise the Licensed Rights, but not otherwise.
+
+2. Patent and trademark rights are not licensed under this Public License.
+
+3. To the extent possible, the Licensor waives any right to collect royalties
+from You for the exercise of the Licensed Rights, whether directly or through
+a collecting society under any voluntary or waivable statutory or compulsory
+licensing scheme. In all other cases the Licensor expressly reserves any right
+to collect such royalties.
+
+Section 3 – License Conditions.
+
+Your exercise of the Licensed Rights is expressly made subject to the following
+conditions.
+
+ a. Attribution.
+
+1. If You Share the Licensed Material (including in modified form), You must:
+
+A. retain the following if it is supplied by the Licensor with the Licensed
+Material:
+
+i. identification of the creator(s) of the Licensed Material and any others
+designated to receive attribution, in any reasonable manner requested by the
+Licensor (including by pseudonym if designated);
+
+ ii. a copyright notice;
+
+ iii. a notice that refers to this Public License;
+
+ iv. a notice that refers to the disclaimer of warranties;
+
+v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
+
+B. indicate if You modified the Licensed Material and retain an indication
+of any previous modifications; and
+
+C. indicate the Licensed Material is licensed under this Public License, and
+include the text of, or the URI or hyperlink to, this Public License.
+
+2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner
+based on the medium, means, and context in which You Share the Licensed Material.
+For example, it may be reasonable to satisfy the conditions by providing a
+URI or hyperlink to a resource that includes the required information.
+
+3. If requested by the Licensor, You must remove any of the information required
+by Section 3(a)(1)(A) to the extent reasonably practicable.
+
+b. ShareAlike.In addition to the conditions in Section 3(a), if You Share
+Adapted Material You produce, the following conditions also apply.
+
+1. The Adapter's License You apply must be a Creative Commons license with
+the same License Elements, this version or later, or a BY-SA Compatible License.
+
+2. You must include the text of, or the URI or hyperlink to, the Adapter's
+License You apply. You may satisfy this condition in any reasonable manner
+based on the medium, means, and context in which You Share Adapted Material.
+
+3. You may not offer or impose any additional or different terms or conditions
+on, or apply any Effective Technological Measures to, Adapted Material that
+restrict exercise of the rights granted under the Adapter's License You apply.
+
+Section 4 – Sui Generis Database Rights.
+
+Where the Licensed Rights include Sui Generis Database Rights that apply to
+Your use of the Licensed Material:
+
+a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract,
+reuse, reproduce, and Share all or a substantial portion of the contents of
+the database;
+
+b. if You include all or a substantial portion of the database contents in
+a database in which You have Sui Generis Database Rights, then the database
+in which You have Sui Generis Database Rights (but not its individual contents)
+is Adapted Material, including for purposes of Section 3(b); and
+
+c. You must comply with the conditions in Section 3(a) if You Share all or
+a substantial portion of the contents of the database.
+
+For the avoidance of doubt, this Section 4 supplements and does not replace
+Your obligations under this Public License where the Licensed Rights include
+other Copyright and Similar Rights.
+
+Section 5 – Disclaimer of Warranties and Limitation of Liability.
+
+a. Unless otherwise separately undertaken by the Licensor, to the extent possible,
+the Licensor offers the Licensed Material as-is and as-available, and makes
+no representations or warranties of any kind concerning the Licensed Material,
+whether express, implied, statutory, or other. This includes, without limitation,
+warranties of title, merchantability, fitness for a particular purpose, non-infringement,
+absence of latent or other defects, accuracy, or the presence or absence of
+errors, whether or not known or discoverable. Where disclaimers of warranties
+are not allowed in full or in part, this disclaimer may not apply to You.
+
+b. To the extent possible, in no event will the Licensor be liable to You
+on any legal theory (including, without limitation, negligence) or otherwise
+for any direct, special, indirect, incidental, consequential, punitive, exemplary,
+or other losses, costs, expenses, or damages arising out of this Public License
+or use of the Licensed Material, even if the Licensor has been advised of
+the possibility of such losses, costs, expenses, or damages. Where a limitation
+of liability is not allowed in full or in part, this limitation may not apply
+to You.
+
+c. The disclaimer of warranties and limitation of liability provided above
+shall be interpreted in a manner that, to the extent possible, most closely
+approximates an absolute disclaimer and waiver of all liability.
+
+Section 6 – Term and Termination.
+
+a. This Public License applies for the term of the Copyright and Similar Rights
+licensed here. However, if You fail to comply with this Public License, then
+Your rights under this Public License terminate automatically.
+
+b. Where Your right to use the Licensed Material has terminated under Section
+6(a), it reinstates:
+
+1. automatically as of the date the violation is cured, provided it is cured
+within 30 days of Your discovery of the violation; or
+
+ 2. upon express reinstatement by the Licensor.
+
+c. For the avoidance of doubt, this Section 6(b) does not affect any right
+the Licensor may have to seek remedies for Your violations of this Public
+License.
+
+d. For the avoidance of doubt, the Licensor may also offer the Licensed Material
+under separate terms or conditions or stop distributing the Licensed Material
+at any time; however, doing so will not terminate this Public License.
+
+ e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
+
+Section 7 – Other Terms and Conditions.
+
+a. The Licensor shall not be bound by any additional or different terms or
+conditions communicated by You unless expressly agreed.
+
+b. Any arrangements, understandings, or agreements regarding the Licensed
+Material not stated herein are separate from and independent of the terms
+and conditions of this Public License.
+
+Section 8 – Interpretation.
+
+a. For the avoidance of doubt, this Public License does not, and shall not
+be interpreted to, reduce, limit, restrict, or impose conditions on any use
+of the Licensed Material that could lawfully be made without permission under
+this Public License.
+
+b. To the extent possible, if any provision of this Public License is deemed
+unenforceable, it shall be automatically reformed to the minimum extent necessary
+to make it enforceable. If the provision cannot be reformed, it shall be severed
+from this Public License without affecting the enforceability of the remaining
+terms and conditions.
+
+c. No term or condition of this Public License will be waived and no failure
+to comply consented to unless expressly agreed to by the Licensor.
+
+d. Nothing in this Public License constitutes or may be interpreted as a limitation
+upon, or waiver of, any privileges and immunities that apply to the Licensor
+or You, including from the legal processes of any jurisdiction or authority.
+
+Creative Commons is not a party to its public licenses. Notwithstanding, Creative
+Commons may elect to apply one of its public licenses to material it publishes
+and in those instances will be considered the "Licensor." The text of the
+Creative Commons public licenses is dedicated to the public domain under the
+CC0 Public Domain Dedication. Except for the limited purpose of indicating
+that material is shared under a Creative Commons public license or as otherwise
+permitted by the Creative Commons policies published at creativecommons.org/policies,
+Creative Commons does not authorize the use of the trademark "Creative Commons"
+or any other trademark or logo of Creative Commons without its prior written
+consent including, without limitation, in connection with any unauthorized
+modifications to any of its public licenses or any other arrangements, understandings,
+or agreements concerning use of licensed material. For the avoidance of doubt,
+this paragraph does not form part of the public licenses.
+
+Creative Commons may be contacted at creativecommons.org.
diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt
new file mode 100644
index 0000000..a343ccd
--- /dev/null
+++ b/LICENSES/CC0-1.0.txt
@@ -0,0 +1,119 @@
+Creative Commons Legal Code
+
+CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES
+NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE
+AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION
+ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE
+OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS
+LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION
+OR WORKS PROVIDED HEREUNDER.
+
+Statement of Purpose
+
+The laws of most jurisdictions throughout the world automatically confer exclusive
+Copyright and Related Rights (defined below) upon the creator and subsequent
+owner(s) (each and all, an "owner") of an original work of authorship and/or
+a database (each, a "Work").
+
+Certain owners wish to permanently relinquish those rights to a Work for the
+purpose of contributing to a commons of creative, cultural and scientific
+works ("Commons") that the public can reliably and without fear of later claims
+of infringement build upon, modify, incorporate in other works, reuse and
+redistribute as freely as possible in any form whatsoever and for any purposes,
+including without limitation commercial purposes. These owners may contribute
+to the Commons to promote the ideal of a free culture and the further production
+of creative, cultural and scientific works, or to gain reputation or greater
+distribution for their Work in part through the use and efforts of others.
+
+For these and/or other purposes and motivations, and without any expectation
+of additional consideration or compensation, the person associating CC0 with
+a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
+and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
+and publicly distribute the Work under its terms, with knowledge of his or
+her Copyright and Related Rights in the Work and the meaning and intended
+legal effect of CC0 on those rights.
+
+1. Copyright and Related Rights. A Work made available under CC0 may be protected
+by copyright and related or neighboring rights ("Copyright and Related Rights").
+Copyright and Related Rights include, but are not limited to, the following:
+
+i. the right to reproduce, adapt, distribute, perform, display, communicate,
+and translate a Work;
+
+ ii. moral rights retained by the original author(s) and/or performer(s);
+
+iii. publicity and privacy rights pertaining to a person's image or likeness
+depicted in a Work;
+
+iv. rights protecting against unfair competition in regards to a Work, subject
+to the limitations in paragraph 4(a), below;
+
+v. rights protecting the extraction, dissemination, use and reuse of data
+in a Work;
+
+vi. database rights (such as those arising under Directive 96/9/EC of the
+European Parliament and of the Council of 11 March 1996 on the legal protection
+of databases, and under any national implementation thereof, including any
+amended or successor version of such directive); and
+
+vii. other similar, equivalent or corresponding rights throughout the world
+based on applicable law or treaty, and any national implementations thereof.
+
+2. Waiver. To the greatest extent permitted by, but not in contravention of,
+applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
+unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
+and Related Rights and associated claims and causes of action, whether now
+known or unknown (including existing as well as future claims and causes of
+action), in the Work (i) in all territories worldwide, (ii) for the maximum
+duration provided by applicable law or treaty (including future time extensions),
+(iii) in any current or future medium and for any number of copies, and (iv)
+for any purpose whatsoever, including without limitation commercial, advertising
+or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the
+benefit of each member of the public at large and to the detriment of Affirmer's
+heirs and successors, fully intending that such Waiver shall not be subject
+to revocation, rescission, cancellation, termination, or any other legal or
+equitable action to disrupt the quiet enjoyment of the Work by the public
+as contemplated by Affirmer's express Statement of Purpose.
+
+3. Public License Fallback. Should any part of the Waiver for any reason be
+judged legally invalid or ineffective under applicable law, then the Waiver
+shall be preserved to the maximum extent permitted taking into account Affirmer's
+express Statement of Purpose. In addition, to the extent the Waiver is so
+judged Affirmer hereby grants to each affected person a royalty-free, non
+transferable, non sublicensable, non exclusive, irrevocable and unconditional
+license to exercise Affirmer's Copyright and Related Rights in the Work (i)
+in all territories worldwide, (ii) for the maximum duration provided by applicable
+law or treaty (including future time extensions), (iii) in any current or
+future medium and for any number of copies, and (iv) for any purpose whatsoever,
+including without limitation commercial, advertising or promotional purposes
+(the "License"). The License shall be deemed effective as of the date CC0
+was applied by Affirmer to the Work. Should any part of the License for any
+reason be judged legally invalid or ineffective under applicable law, such
+partial invalidity or ineffectiveness shall not invalidate the remainder of
+the License, and in such case Affirmer hereby affirms that he or she will
+not (i) exercise any of his or her remaining Copyright and Related Rights
+in the Work or (ii) assert any associated claims and causes of action with
+respect to the Work, in either case contrary to Affirmer's express Statement
+of Purpose.
+
+ 4. Limitations and Disclaimers.
+
+a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered,
+licensed or otherwise affected by this document.
+
+b. Affirmer offers the Work as-is and makes no representations or warranties
+of any kind concerning the Work, express, implied, statutory or otherwise,
+including without limitation warranties of title, merchantability, fitness
+for a particular purpose, non infringement, or the absence of latent or other
+defects, accuracy, or the present or absence of errors, whether or not discoverable,
+all to the greatest extent permissible under applicable law.
+
+c. Affirmer disclaims responsibility for clearing rights of other persons
+that may apply to the Work or any use thereof, including without limitation
+any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims
+responsibility for obtaining any necessary consents, permissions or other
+rights required for any use of the Work.
+
+d. Affirmer understands and acknowledges that Creative Commons is not a party
+to this document and has no duty or obligation with respect to this CC0 or
+use of the Work.
diff --git a/LICENSES/LAL-1.3.txt b/LICENSES/LAL-1.3.txt
new file mode 100644
index 0000000..4dcefed
--- /dev/null
+++ b/LICENSES/LAL-1.3.txt
@@ -0,0 +1,183 @@
+Licence Art Libre 1.3 (LAL 1.3)
+
+Préambule :
+
+Avec la Licence Art Libre, l'autorisation est donnée de copier, de diffuser
+et de transformer librement les œuvres dans le respect des droits de l'auteur.
+
+Loin d'ignorer ces droits, la Licence Art Libre les reconnaît et les protège.
+Elle en reformule l'exercice en permettant à tout un chacun de faire un usage
+créatif des productions de l'esprit quels que soient leur genre et leur forme
+d'expression.
+
+Si, en règle générale, l'application du droit d'auteur conduit à restreindre
+l'accès aux œuvres de l'esprit, la Licence Art Libre, au contraire, le favorise.
+L'intention est d'autoriser l'utilisation des ressources d'une œuvre ; créer
+de nouvelles conditions de création pour amplifier les possibilités de création.
+La Licence Art Libre permet d'avoir jouissance des œuvres tout en reconnaissant
+les droits et les responsabilités de chacun.
+
+Avec le développement du numérique, l'invention d'internet et des logiciels
+libres, les modalités de création ont évolué : les productions de l'esprit
+s'offrent naturellement à la circulation, à l'échange et aux transformations.
+Elles se prêtent favorablement à la réalisation d'œuvres communes que chacun
+peut augmenter pour l'avantage de tous.
+
+C'est la raison essentielle de la Licence Art Libre : promouvoir et protéger
+ces productions de l'esprit selon les principes du copyleft : liberté d'usage,
+de copie, de diffusion, de transformation et interdiction d'appropriation
+exclusive.
+
+Définitions :
+
+Nous désignons par « œuvre », autant l'œuvre initiale, les œuvres conséquentes,
+que l'œuvre commune telles que définies ci-après :
+
+L'œuvre commune : Il s'agit d'une œuvre qui comprend l'œuvre initiale ainsi
+que toutes les contributions postérieures (les originaux conséquents et les
+copies). Elle est créée à l'initiative de l'auteur initial qui par cette licence
+définit les conditions selon lesquelles les contributions sont faites.
+
+L'œuvre initiale : C'est-à-dire l'œuvre créée par l'initiateur de l'œuvre
+commune dont les copies vont être modifiées par qui le souhaite.
+
+Les œuvres conséquentes : C'est-à-dire les contributions des auteurs qui participent
+à la formation de l'œuvre commune en faisant usage des droits de reproduction,
+de diffusion et de modification que leur confère la licence.
+
+Originaux (sources ou ressources de l'œuvre) : Chaque exemplaire daté de l'œuvre
+initiale ou conséquente que leurs auteurs présentent comme référence pour
+toutes actualisations, interprétations, copies ou reproductions ultérieures.
+
+Copie : Toute reproduction d'un original au sens de cette licence.
+
+ 1- OBJET.
+
+Cette licence a pour objet de définir les conditions selon lesquelles vous
+pouvez jouir librement de l'œuvre.
+
+ 2. L'ÉTENDUE DE LA JOUISSANCE.
+
+Cette œuvre est soumise au droit d'auteur, et l'auteur par cette licence vous
+indique quelles sont vos libertés pour la copier, la diffuser et la modifier.
+
+ 2.1 LA LIBERTÉ DE COPIER (OU DE REPRODUCTION).
+
+Vous avez la liberté de copier cette œuvre pour vous, vos amis ou toute autre
+personne, quelle que soit la technique employée.
+
+ 2.2 LA LIBERTÉ DE DIFFUSER (INTERPRÉTER, REPRÉSENTER, DISTRIBUER).
+
+Vous pouvez diffuser librement les copies de ces œuvres, modifiées ou non,
+quel que soit le support, quel que soit le lieu, à titre onéreux ou gratuit,
+si vous respectez toutes les conditions suivantes :
+
+1. joindre aux copies cette licence à l'identique ou indiquer précisément
+où se trouve la licence ;
+
+2. indiquer au destinataire le nom de chaque auteur des originaux, y compris
+le vôtre si vous avez modifié l'œuvre ;
+
+3. indiquer au destinataire où il pourrait avoir accès aux originaux (initiaux
+et/ou conséquents). Les auteurs des originaux pourront, s'ils le souhaitent,
+vous autoriser à diffuser l'original dans les mêmes conditions que les copies.
+
+ 2.3 LA LIBERTÉ DE MODIFIER.
+
+Vous avez la liberté de modifier les copies des originaux (initiaux et conséquents)
+dans le respect des conditions suivantes :
+
+1. celles prévues à l'article 2.2 en cas de diffusion de la copie modifiée ;
+
+2. indiquer qu'il s'agit d'une œuvre modifiée et, si possible, la nature de
+la modification ;
+
+3. diffuser cette œuvre conséquente avec la même licence ou avec toute licence
+compatible ;
+
+4. Les auteurs des originaux pourront, s'ils le souhaitent, vous autoriser
+à modifier l'original dans les mêmes conditions que les copies.
+
+ 3. DROITS CONNEXES.
+
+Les actes donnant lieu à des droits d'auteur ou des droits voisins ne doivent
+pas constituer un obstacle aux libertés conférées par cette licence.
+
+C'est pourquoi, par exemple, les interprétations doivent être soumises à la
+même licence ou une licence compatible. De même, l'intégration de l'œuvre
+à une base de données, une compilation ou une anthologie ne doit pas faire
+obstacle à la jouissance de l'œuvre telle que définie par cette licence.
+
+ 4. L' INTÉGRATION DE L'ŒUVRE.
+
+Toute intégration de cette œuvre à un ensemble non soumis à la LAL doit assurer
+l'exercice des libertés conférées par cette licence.
+
+Si l'œuvre n'est plus accessible indépendamment de l'ensemble, alors l'intégration
+n'est possible qu'à condition que l'ensemble soit soumis à la LAL ou une licence
+compatible.
+
+ 5. CRITÈRES DE COMPATIBILITÉ.
+
+ Une licence est compatible avec la LAL si et seulement si :
+
+1. elle accorde l'autorisation de copier, diffuser et modifier des copies
+de l'œuvre, y compris à des fins lucratives, et sans autres restrictions que
+celles qu'impose le respect des autres critères de compatibilité ;
+
+2. elle garantit la paternité de l'œuvre et l'accès aux versions antérieures
+de l'œuvre quand cet accès est possible ;
+
+ 3. elle reconnaît la LAL également compatible (réciprocité) ;
+
+4. elle impose que les modifications faites sur l'œuvre soient soumises à
+la même licence ou encore à une licence répondant aux critères de compatibilité
+posés par la LAL.
+
+ 6. VOS DROITS INTELLECTUELS.
+
+La LAL n'a pas pour objet de nier vos droits d'auteur sur votre contribution
+ni vos droits connexes. En choisissant de contribuer à l'évolution de cette
+œuvre commune, vous acceptez seulement d'offrir aux autres les mêmes autorisations
+sur votre contribution que celles qui vous ont été accordées par cette licence.
+Ces autorisations n'entraînent pas un dessaisissement de vos droits intellectuels.
+
+ 7. VOS RESPONSABILITÉS.
+
+La liberté de jouir de l'œuvre tel que permis par la LAL (liberté de copier,
+diffuser, modifier) implique pour chacun la responsabilité de ses propres
+faits.
+
+ 8. LA DURÉE DE LA LICENCE.
+
+Cette licence prend effet dès votre acceptation de ses dispositions. Le fait
+de copier, de diffuser, ou de modifier l'œuvre constitue une acceptation tacite.
+
+Cette licence a pour durée la durée des droits d'auteur attachés à l'œuvre.
+Si vous ne respectez pas les termes de cette licence, vous perdez automatiquement
+les droits qu'elle vous confère.
+
+Si le régime juridique auquel vous êtes soumis ne vous permet pas de respecter
+les termes de cette licence, vous ne pouvez pas vous prévaloir des libertés
+qu'elle confère.
+
+ 9. LES DIFFÉRENTES VERSIONS DE LA LICENCE.
+
+Cette licence pourra être modifiée régulièrement, en vue de son amélioration,
+par ses auteurs (les acteurs du mouvement Copyleft Attitude) sous la forme
+de nouvelles versions numérotées.
+
+Vous avez toujours le choix entre vous contenter des dispositions contenues
+dans la version de la LAL sous laquelle la copie vous a été communiquée ou
+alors, vous prévaloir des dispositions d'une des versions ultérieures.
+
+ 10. LES SOUS-LICENCES.
+
+Les sous-licences ne sont pas autorisées par la présente. Toute personne qui
+souhaite bénéficier des libertés qu'elle confère sera liée directement aux
+auteurs de l'œuvre commune.
+
+ 11. LE CONTEXTE JURIDIQUE.
+
+Cette licence est rédigée en référence au droit français et à la Convention
+de Berne relative au droit d'auteur.
diff --git a/LICENSES/MIT.txt b/LICENSES/MIT.txt
new file mode 100644
index 0000000..204b93d
--- /dev/null
+++ b/LICENSES/MIT.txt
@@ -0,0 +1,19 @@
+MIT License Copyright (c) <year> <copyright holders>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
+OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/LICENSES/ODC-By-1.0.txt b/LICENSES/ODC-By-1.0.txt
new file mode 100644
index 0000000..733e5d7
--- /dev/null
+++ b/LICENSES/ODC-By-1.0.txt
@@ -0,0 +1,398 @@
+##
+
+ODC Attribution License (ODC-By) ###
+
+Preamble
+
+The Open Data Commons Attribution License is a license agreement intended
+to allow users to freely share, modify, and use this Database subject only
+to the attribution requirements set out in Section 4.
+
+Databases can contain a wide variety of types of content (images, audiovisual
+material, and sounds all in the same database, for example), and so this license
+only governs the rights over the Database, and not the contents of the Database
+individually. Licensors may therefore wish to use this license together with
+another license for the contents.
+
+Sometimes the contents of a database, or the database itself, can be covered
+by other rights not addressed here (such as private contracts, trademark over
+the name, or privacy rights / data protection rights over information in the
+contents), and so you are advised that you may have to consult other documents
+or clear other rights before doing activities not covered by this License.
+
+------
+
+The Licensor (as defined below)
+
+and
+
+You (as defined below)
+
+agree as follows:
+
+ 1.0 Definitions of Capitalised Words
+
+"Collective Database" - Means this Database in unmodified form as part of
+a collection of independent databases in themselves that together are assembled
+into a collective whole. A work that constitutes a Collective Database will
+not be considered a Derivative Database.
+
+"Convey" - As a verb, means Using the Database, a Derivative Database, or
+the Database as part of a Collective Database in any way that enables a Person
+to make or receive copies of the Database or a Derivative Database. Conveying
+does not include interaction with a user through a computer network, or creating
+and Using a Produced Work, where no transfer of a copy of the Database or
+a Derivative Database occurs.
+
+"Contents" - The contents of this Database, which includes the information,
+independent works, or other material collected into the Database. For example,
+the contents of the Database could be factual data or works such as images,
+audiovisual material, text, or sounds.
+
+"Database" - A collection of material (the Contents) arranged in a systematic
+or methodical way and individually accessible by electronic or other means
+offered under the terms of this License.
+
+"Database Directive" - Means Directive 96/9/EC of the European Parliament
+and of the Council of 11 March 1996 on the legal protection of databases,
+as amended or succeeded.
+
+"Database Right" - Means rights resulting from the Chapter III ("sui generis")
+rights in the Database Directive (as amended and as transposed by member states),
+which includes the Extraction and Re-utilisation of the whole or a Substantial
+part of the Contents, as well as any similar rights available in the relevant
+jurisdiction under Section 10.4.
+
+"Derivative Database" - Means a database based upon the Database, and includes
+any translation, adaptation, arrangement, modification, or any other alteration
+of the Database or of a Substantial part of the Contents. This includes, but
+is not limited to, Extracting or Re-utilising the whole or a Substantial part
+of the Contents in a new Database.
+
+"Extraction" - Means the permanent or temporary transfer of all or a Substantial
+part of the Contents to another medium by any means or in any form.
+
+"License" - Means this license agreement and is both a license of rights such
+as copyright and Database Rights and an agreement in contract.
+
+"Licensor" - Means the Person that offers the Database under the terms of
+this License.
+
+"Person" - Means a natural or legal person or a body of persons corporate
+or incorporate.
+
+"Produced Work" - a work (such as an image, audiovisual material, text, or
+sounds) resulting from using the whole or a Substantial part of the Contents
+(via a search or other query) from this Database, a Derivative Database, or
+this Database as part of a Collective Database.
+
+"Publicly" - means to Persons other than You or under Your control by either
+more than 50% ownership or by the power to direct their activities (such as
+contracting with an independent consultant).
+
+"Re-utilisation" - means any form of making available to the public all or
+a Substantial part of the Contents by the distribution of copies, by renting,
+by online or other forms of transmission.
+
+"Substantial" - Means substantial in terms of quantity or quality or a combination
+of both. The repeated and systematic Extraction or Re-utilisation of insubstantial
+parts of the Contents may amount to the Extraction or Re-utilisation of a
+Substantial part of the Contents.
+
+"Use" - As a verb, means doing any act that is restricted by copyright or
+Database Rights whether in the original medium or any other; and includes
+without limitation distributing, copying, publicly performing, publicly displaying,
+and preparing derivative works of the Database, as well as modifying the Database
+as may be technically necessary to use it in a different mode or format.
+
+"You" - Means a Person exercising rights under this License who has not previously
+violated the terms of this License with respect to the Database, or who has
+received express permission from the Licensor to exercise rights under this
+License despite a previous violation.
+
+ Words in the singular include the plural and vice versa.
+
+ 2.0 What this License covers
+
+ 2.1. Legal effect of this document. This License is:
+
+ a. A license of applicable copyright and neighbouring rights;
+
+ b. A license of the Database Right; and
+
+ c. An agreement in contract between You and the Licensor.
+
+2.2 Legal rights covered. This License covers the legal rights in the Database,
+including:
+
+a. Copyright. Any copyright or neighbouring rights in the Database. The copyright
+licensed includes any individual elements of the Database, but does not cover
+the copyright over the Contents independent of this Database. See Section
+2.4 for details. Copyright law varies between jurisdictions, but is likely
+to cover: the Database model or schema, which is the structure, arrangement,
+and organisation of the Database, and can also include the Database tables
+and table indexes; the data entry and output sheets; and the Field names of
+Contents stored in the Database;
+
+b. Database Rights. Database Rights only extend to the Extraction and Re-utilisation
+of the whole or a Substantial part of the Contents. Database Rights can apply
+even when there is no copyright over the Database. Database Rights can also
+apply when the Contents are removed from the Database and are selected and
+arranged in a way that would not infringe any applicable copyright; and
+
+c. Contract. This is an agreement between You and the Licensor for access
+to the Database. In return you agree to certain conditions of use on this
+access as outlined in this License.
+
+ 2.3 Rights not covered.
+
+a. This License does not apply to computer programs used in the making or
+operation of the Database;
+
+b. This License does not cover any patents over the Contents or the Database;
+and
+
+c. This License does not cover any trademarks associated with the Database.
+
+2.4 Relationship to Contents in the Database. The individual items of the
+Contents contained in this Database may be covered by other rights, including
+copyright, patent, data protection, privacy, or personality rights, and this
+License does not cover any rights (other than Database Rights or in contract)
+in individual Contents contained in the Database. For example, if used on
+a Database of images (the Contents), this License would not apply to copyright
+over individual images, which could have their own separate licenses, or one
+single license covering all of the rights over the images.
+
+ 3.0 Rights granted
+
+3.1 Subject to the terms and conditions of this License, the Licensor grants
+to You a worldwide, royalty-free, non-exclusive, terminable (but only under
+Section 9) license to Use the Database for the duration of any applicable
+copyright and Database Rights. These rights explicitly include commercial
+use, and do not exclude any field of endeavour. To the extent possible in
+the relevant jurisdiction, these rights may be exercised in all media and
+formats whether now known or created in the future.
+
+ The rights granted cover, for example:
+
+a. Extraction and Re-utilisation of the whole or a Substantial part of the
+Contents;
+
+ b. Creation of Derivative Databases;
+
+ c. Creation of Collective Databases;
+
+d. Creation of temporary or permanent reproductions by any means and in any
+form, in whole or in part, including of any Derivative Databases or as a part
+of Collective Databases; and
+
+e. Distribution, communication, display, lending, making available, or performance
+to the public by any means and in any form, in whole or in part, including
+of any Derivative Database or as a part of Collective Databases.
+
+ 3.2 Compulsory license schemes. For the avoidance of doubt:
+
+a. Non-waivable compulsory license schemes. In those jurisdictions in which
+the right to collect royalties through any statutory or compulsory licensing
+scheme cannot be waived, the Licensor reserves the exclusive right to collect
+such royalties for any exercise by You of the rights granted under this License;
+
+b. Waivable compulsory license schemes. In those jurisdictions in which the
+right to collect royalties through any statutory or compulsory licensing scheme
+can be waived, the Licensor waives the exclusive right to collect such royalties
+for any exercise by You of the rights granted under this License; and,
+
+c. Voluntary license schemes. The Licensor waives the right to collect royalties,
+whether individually or, in the event that the Licensor is a member of a collecting
+society that administers voluntary licensing schemes, via that society, from
+any exercise by You of the rights granted under this License.
+
+3.3 The right to release the Database under different terms, or to stop distributing
+or making available the Database, is reserved. Note that this Database may
+be multiple-licensed, and so You may have the choice of using alternative
+licenses for this Database. Subject to Section 10.4, all other rights not
+expressly granted by Licensor are reserved.
+
+ 4.0 Conditions of Use
+
+4.1 The rights granted in Section 3 above are expressly made subject to Your
+complying with the following conditions of use. These are important conditions
+of this License, and if You fail to follow them, You will be in material breach
+of its terms.
+
+4.2 Notices. If You Publicly Convey this Database, any Derivative Database,
+or the Database as part of a Collective Database, then You must:
+
+ a. Do so only under the terms of this License;
+
+b. Include a copy of this License or its Uniform Resource Identifier (URI)
+with the Database or Derivative Database, including both in the Database or
+Derivative Database and in any relevant documentation;
+
+c. Keep intact any copyright or Database Right notices and notices that refer
+to this License; and
+
+d. If it is not possible to put the required notices in a particular file
+due to its structure, then You must include the notices in a location (such
+as a relevant directory) where users would be likely to look for it.
+
+4.3 Notice for using output (Contents). Creating and Using a Produced Work
+does not require the notice in Section 4.2. However, if you Publicly Use a
+Produced Work, You must include a notice associated with the Produced Work
+reasonably calculated to make any Person that uses, views, accesses, interacts
+with, or is otherwise exposed to the Produced Work aware that Content was
+obtained from the Database, Derivative Database, or the Database as part of
+a Collective Database, and that it is available under this License.
+
+a. Example notice. The following text will satisfy notice under Section 4.3:
+
+Contains information from DATABASE NAME which is made available under the
+ODC Attribution License.
+
+DATABASE NAME should be replaced with the name of the Database and a hyperlink
+to the location of the Database. "ODC Attribution License" should contain
+a hyperlink to the URI of the text of this License. If hyperlinks are not
+possible, You should include the plain text of the required URI's with the
+above notice.
+
+4.4 Licensing of others. You may not sublicense the Database. Each time You
+communicate the Database, the whole or Substantial part of the Contents, or
+any Derivative Database to anyone else in any way, the Licensor offers to
+the recipient a license to the Database on the same terms and conditions as
+this License. You are not responsible for enforcing compliance by third parties
+with this License, but You may enforce any rights that You have over a Derivative
+Database. You are solely responsible for any modifications of a Derivative
+Database made by You or another Person at Your direction. You may not impose
+any further restrictions on the exercise of the rights granted or affirmed
+under this License.
+
+ 5.0 Moral rights
+
+5.1 Moral rights. This section covers moral rights, including any rights to
+be identified as the author of the Database or to object to treatment that
+would otherwise prejudice the author's honour and reputation, or any other
+derogatory treatment:
+
+a. For jurisdictions allowing waiver of moral rights, Licensor waives all
+moral rights that Licensor may have in the Database to the fullest extent
+possible by the law of the relevant jurisdiction under Section 10.4;
+
+b. If waiver of moral rights under Section 5.1 a in the relevant jurisdiction
+is not possible, Licensor agrees not to assert any moral rights over the Database
+and waives all claims in moral rights to the fullest extent possible by the
+law of the relevant jurisdiction under Section 10.4; and
+
+c. For jurisdictions not allowing waiver or an agreement not to assert moral
+rights under Section 5.1 a and b, the author may retain their moral rights
+over certain aspects of the Database.
+
+Please note that some jurisdictions do not allow for the waiver of moral rights,
+and so moral rights may still subsist over the Database in some jurisdictions.
+
+ 6.0 Fair dealing, Database exceptions, and other rights not affected
+
+6.1 This License does not affect any rights that You or anyone else may independently
+have under any applicable law to make any use of this Database, including
+without limitation:
+
+a. Exceptions to the Database Right including: Extraction of Contents from
+non-electronic Databases for private purposes, Extraction for purposes of
+illustration for teaching or scientific research, and Extraction or Re-utilisation
+for public security or an administrative or judicial procedure.
+
+b. Fair dealing, fair use, or any other legally recognised limitation or exception
+to infringement of copyright or other applicable laws.
+
+6.2 This License does not affect any rights of lawful users to Extract and
+Re-utilise insubstantial parts of the Contents, evaluated quantitatively or
+qualitatively, for any purposes whatsoever, including creating a Derivative
+Database (subject to other rights over the Contents, see Section 2.4). The
+repeated and systematic Extraction or Re-utilisation of insubstantial parts
+of the Contents may however amount to the Extraction or Re-utilisation of
+a Substantial part of the Contents.
+
+ 7.0 Warranties and Disclaimer
+
+7.1 The Database is licensed by the Licensor "as is" and without any warranty
+of any kind, either express, implied, or arising by statute, custom, course
+of dealing, or trade usage. Licensor specifically disclaims any and all implied
+warranties or conditions of title, non-infringement, accuracy or completeness,
+the presence or absence of errors, fitness for a particular purpose, merchantability,
+or otherwise. Some jurisdictions do not allow the exclusion of implied warranties,
+so this exclusion may not apply to You.
+
+ 8.0 Limitation of liability
+
+8.1 Subject to any liability that may not be excluded or limited by law, the
+Licensor is not liable for, and expressly excludes, all liability for loss
+or damage however and whenever caused to anyone by any use under this License,
+whether by You or by anyone else, and whether caused by any fault on the part
+of the Licensor or not. This exclusion of liability includes, but is not limited
+to, any special, incidental, consequential, punitive, or exemplary damages
+such as loss of revenue, data, anticipated profits, and lost business. This
+exclusion applies even if the Licensor has been advised of the possibility
+of such damages.
+
+8.2 If liability may not be excluded by law, it is limited to actual and direct
+financial loss to the extent it is caused by proved negligence on the part
+of the Licensor.
+
+ 9.0 Termination of Your rights under this License
+
+9.1 Any breach by You of the terms and conditions of this License automatically
+terminates this License with immediate effect and without notice to You. For
+the avoidance of doubt, Persons who have received the Database, the whole
+or a Substantial part of the Contents, Derivative Databases, or the Database
+as part of a Collective Database from You under this License will not have
+their licenses terminated provided their use is in full compliance with this
+License or a license granted under Section 4.8 of this License. Sections 1,
+2, 7, 8, 9 and 10 will survive any termination of this License.
+
+9.2 If You are not in breach of the terms of this License, the Licensor will
+not terminate Your rights under it.
+
+9.3 Unless terminated under Section 9.1, this License is granted to You for
+the duration of applicable rights in the Database.
+
+9.4 Reinstatement of rights. If you cease any breach of the terms and conditions
+of this License, then your full rights under this License will be reinstated:
+
+a. Provisionally and subject to permanent termination until the 60th day after
+cessation of breach;
+
+b. Permanently on the 60th day after cessation of breach unless otherwise
+reasonably notified by the Licensor; or
+
+c. Permanently if reasonably notified by the Licensor of the violation, this
+is the first time You have received notice of violation of this License from
+the Licensor, and You cure the violation prior to 30 days after your receipt
+of the notice.
+
+9.5 Notwithstanding the above, Licensor reserves the right to release the
+Database under different license terms or to stop distributing or making available
+the Database. Releasing the Database under different license terms or stopping
+the distribution of the Database will not withdraw this License (or any other
+license that has been, or is required to be, granted under the terms of this
+License), and this License will continue in full force and effect unless terminated
+as stated above.
+
+ 10.0 General
+
+10.1 If any provision of this License is held to be invalid or unenforceable,
+that must not affect the validity or enforceability of the remainder of the
+terms and conditions of this License and each remaining provision of this
+License shall be valid and enforced to the fullest extent permitted by law.
+
+10.2 This License is the entire agreement between the parties with respect
+to the rights granted here over the Database. It replaces any earlier understandings,
+agreements or representations with respect to the Database.
+
+10.3 If You are in breach of the terms of this License, You will not be entitled
+to rely on the terms of this License or to complain of any breach by the Licensor.
+
+10.4 Choice of law. This License takes effect in and will be governed by the
+laws of the relevant jurisdiction in which the License terms are sought to
+be enforced. If the standard suite of rights granted under applicable copyright
+law and Database Rights in the relevant jurisdiction includes additional rights
+not granted under this License, these additional rights are granted in this
+License in order to meet the terms of this License.
diff --git a/LICENSES/ODbL-1.0.txt b/LICENSES/ODbL-1.0.txt
new file mode 100644
index 0000000..5601477
--- /dev/null
+++ b/LICENSES/ODbL-1.0.txt
@@ -0,0 +1,500 @@
+ODC Open Database License (ODbL) Preamble
+
+The Open Database License (ODbL) is a license agreement intended to allow
+users to freely share, modify, and use this Database while maintaining this
+same freedom for others. Many databases are covered by copyright, and therefore
+this document licenses these rights. Some jurisdictions, mainly in the European
+Union, have specific rights that cover databases, and so the ODbL addresses
+these rights, too. Finally, the ODbL is also an agreement in contract for
+users of this Database to act in certain ways in return for accessing this
+Database.
+
+Databases can contain a wide variety of types of content (images, audiovisual
+material, and sounds all in the same database, for example), and so the ODbL
+only governs the rights over the Database, and not the contents of the Database
+individually. Licensors should use the ODbL together with another license
+for the contents, if the contents have a single set of rights that uniformly
+covers all of the contents. If the contents have multiple sets of different
+rights, Licensors should describe what rights govern what contents together
+in the individual record or in some other way that clarifies what rights apply.
+
+Sometimes the contents of a database, or the database itself, can be covered
+by other rights not addressed here (such as private contracts, trade mark
+over the name, or privacy rights / data protection rights over information
+in the contents), and so you are advised that you may have to consult other
+documents or clear other rights before doing activities not covered by this
+License.
+
+------
+
+The Licensor (as defined below)
+
+and
+
+You (as defined below)
+
+agree as follows:
+
+ 1.0 Definitions of Capitalised Words
+
+"Collective Database" - Means this Database in unmodified form as part of
+a collection of independent databases in themselves that together are assembled
+into a collective whole. A work that constitutes a Collective Database will
+not be considered a Derivative Database.
+
+"Convey" - As a verb, means Using the Database, a Derivative Database, or
+the Database as part of a Collective Database in any way that enables a Person
+to make or receive copies of the Database or a Derivative Database. Conveying
+does not include interaction with a user through a computer network, or creating
+and Using a Produced Work, where no transfer of a copy of the Database or
+a Derivative Database occurs.
+
+"Contents" - The contents of this Database, which includes the information,
+independent works, or other material collected into the Database. For example,
+the contents of the Database could be factual data or works such as images,
+audiovisual material, text, or sounds.
+
+"Database" - A collection of material (the Contents) arranged in a systematic
+or methodical way and individually accessible by electronic or other means
+offered under the terms of this License.
+
+"Database Directive" - Means Directive 96/9/EC of the European Parliament
+and of the Council of 11 March 1996 on the legal protection of databases,
+as amended or succeeded.
+
+"Database Right" - Means rights resulting from the Chapter III ("sui generis")
+rights in the Database Directive (as amended and as transposed by member states),
+which includes the Extraction and Re-utilisation of the whole or a Substantial
+part of the Contents, as well as any similar rights available in the relevant
+jurisdiction under Section 10.4.
+
+"Derivative Database" - Means a database based upon the Database, and includes
+any translation, adaptation, arrangement, modification, or any other alteration
+of the Database or of a Substantial part of the Contents. This includes, but
+is not limited to, Extracting or Re-utilising the whole or a Substantial part
+of the Contents in a new Database.
+
+"Extraction" - Means the permanent or temporary transfer of all or a Substantial
+part of the Contents to another medium by any means or in any form.
+
+"License" - Means this license agreement and is both a license of rights such
+as copyright and Database Rights and an agreement in contract.
+
+"Licensor" - Means the Person that offers the Database under the terms of
+this License.
+
+"Person" - Means a natural or legal person or a body of persons corporate
+or incorporate.
+
+"Produced Work" - a work (such as an image, audiovisual material, text, or
+sounds) resulting from using the whole or a Substantial part of the Contents
+(via a search or other query) from this Database, a Derivative Database, or
+this Database as part of a Collective Database.
+
+"Publicly" - means to Persons other than You or under Your control by either
+more than 50% ownership or by the power to direct their activities (such as
+contracting with an independent consultant).
+
+"Re-utilisation" - means any form of making available to the public all or
+a Substantial part of the Contents by the distribution of copies, by renting,
+by online or other forms of transmission.
+
+"Substantial" - Means substantial in terms of quantity or quality or a combination
+of both. The repeated and systematic Extraction or Re-utilisation of insubstantial
+parts of the Contents may amount to the Extraction or Re-utilisation of a
+Substantial part of the Contents.
+
+"Use" - As a verb, means doing any act that is restricted by copyright or
+Database Rights whether in the original medium or any other; and includes
+without limitation distributing, copying, publicly performing, publicly displaying,
+and preparing derivative works of the Database, as well as modifying the Database
+as may be technically necessary to use it in a different mode or format.
+
+"You" - Means a Person exercising rights under this License who has not previously
+violated the terms of this License with respect to the Database, or who has
+received express permission from the Licensor to exercise rights under this
+License despite a previous violation.
+
+ Words in the singular include the plural and vice versa.
+
+ 2.0 What this License covers
+
+ 2.1. Legal effect of this document. This License is:
+
+ a. A license of applicable copyright and neighbouring rights;
+
+ b. A license of the Database Right; and
+
+ c. An agreement in contract between You and the Licensor.
+
+2.2 Legal rights covered. This License covers the legal rights in the Database,
+including:
+
+a. Copyright. Any copyright or neighbouring rights in the Database. The copyright
+licensed includes any individual elements of the Database, but does not cover
+the copyright over the Contents independent of this Database. See Section
+2.4 for details. Copyright law varies between jurisdictions, but is likely
+to cover: the Database model or schema, which is the structure, arrangement,
+and organisation of the Database, and can also include the Database tables
+and table indexes; the data entry and output sheets; and the Field names of
+Contents stored in the Database;
+
+b. Database Rights. Database Rights only extend to the Extraction and Re-utilisation
+of the whole or a Substantial part of the Contents. Database Rights can apply
+even when there is no copyright over the Database. Database Rights can also
+apply when the Contents are removed from the Database and are selected and
+arranged in a way that would not infringe any applicable copyright; and
+
+c. Contract. This is an agreement between You and the Licensor for access
+to the Database. In return you agree to certain conditions of use on this
+access as outlined in this License.
+
+ 2.3 Rights not covered.
+
+a. This License does not apply to computer programs used in the making or
+operation of the Database;
+
+b. This License does not cover any patents over the Contents or the Database;
+and
+
+c. This License does not cover any trademarks associated with the Database.
+
+2.4 Relationship to Contents in the Database. The individual items of the
+Contents contained in this Database may be covered by other rights, including
+copyright, patent, data protection, privacy, or personality rights, and this
+License does not cover any rights (other than Database Rights or in contract)
+in individual Contents contained in the Database. For example, if used on
+a Database of images (the Contents), this License would not apply to copyright
+over individual images, which could have their own separate licenses, or one
+single license covering all of the rights over the images.
+
+ 3.0 Rights granted
+
+3.1 Subject to the terms and conditions of this License, the Licensor grants
+to You a worldwide, royalty-free, non-exclusive, terminable (but only under
+Section 9) license to Use the Database for the duration of any applicable
+copyright and Database Rights. These rights explicitly include commercial
+use, and do not exclude any field of endeavour. To the extent possible in
+the relevant jurisdiction, these rights may be exercised in all media and
+formats whether now known or created in the future.
+
+ The rights granted cover, for example:
+
+a. Extraction and Re-utilisation of the whole or a Substantial part of the
+Contents;
+
+ b. Creation of Derivative Databases;
+
+ c. Creation of Collective Databases;
+
+d. Creation of temporary or permanent reproductions by any means and in any
+form, in whole or in part, including of any Derivative Databases or as a part
+of Collective Databases; and
+
+e. Distribution, communication, display, lending, making available, or performance
+to the public by any means and in any form, in whole or in part, including
+of any Derivative Database or as a part of Collective Databases.
+
+ 3.2 Compulsory license schemes. For the avoidance of doubt:
+
+a. Non-waivable compulsory license schemes. In those jurisdictions in which
+the right to collect royalties through any statutory or compulsory licensing
+scheme cannot be waived, the Licensor reserves the exclusive right to collect
+such royalties for any exercise by You of the rights granted under this License;
+
+b. Waivable compulsory license schemes. In those jurisdictions in which the
+right to collect royalties through any statutory or compulsory licensing scheme
+can be waived, the Licensor waives the exclusive right to collect such royalties
+for any exercise by You of the rights granted under this License; and,
+
+c. Voluntary license schemes. The Licensor waives the right to collect royalties,
+whether individually or, in the event that the Licensor is a member of a collecting
+society that administers voluntary licensing schemes, via that society, from
+any exercise by You of the rights granted under this License.
+
+3.3 The right to release the Database under different terms, or to stop distributing
+or making available the Database, is reserved. Note that this Database may
+be multiple-licensed, and so You may have the choice of using alternative
+licenses for this Database. Subject to Section 10.4, all other rights not
+expressly granted by Licensor are reserved.
+
+ 4.0 Conditions of Use
+
+4.1 The rights granted in Section 3 above are expressly made subject to Your
+complying with the following conditions of use. These are important conditions
+of this License, and if You fail to follow them, You will be in material breach
+of its terms.
+
+4.2 Notices. If You Publicly Convey this Database, any Derivative Database,
+or the Database as part of a Collective Database, then You must:
+
+a. Do so only under the terms of this License or another license permitted
+under Section 4.4;
+
+b. Include a copy of this License (or, as applicable, a license permitted
+under Section 4.4) or its Uniform Resource Identifier (URI) with the Database
+or Derivative Database, including both in the Database or Derivative Database
+and in any relevant documentation; and
+
+c. Keep intact any copyright or Database Right notices and notices that refer
+to this License.
+
+d. If it is not possible to put the required notices in a particular file
+due to its structure, then You must include the notices in a location (such
+as a relevant directory) where users would be likely to look for it.
+
+4.3 Notice for using output (Contents). Creating and Using a Produced Work
+does not require the notice in Section 4.2. However, if you Publicly Use a
+Produced Work, You must include a notice associated with the Produced Work
+reasonably calculated to make any Person that uses, views, accesses, interacts
+with, or is otherwise exposed to the Produced Work aware that Content was
+obtained from the Database, Derivative Database, or the Database as part of
+a Collective Database, and that it is available under this License.
+
+a. Example notice. The following text will satisfy notice under Section 4.3:
+
+Contains information from DATABASE NAME, which is made available here under
+the Open Database License (ODbL).
+
+DATABASE NAME should be replaced with the name of the Database and a hyperlink
+to the URI of the Database. "Open Database License" should contain a hyperlink
+to the URI of the text of this License. If hyperlinks are not possible, You
+should include the plain text of the required URI's with the above notice.
+
+ 4.4 Share alike.
+
+a. Any Derivative Database that You Publicly Use must be only under the terms
+of:
+
+ i. This License;
+
+ii. A later version of this License similar in spirit to this License; or
+
+ iii. A compatible license.
+
+If You license the Derivative Database under one of the licenses mentioned
+in (iii), You must comply with the terms of that license.
+
+b. For the avoidance of doubt, Extraction or Re-utilisation of the whole or
+a Substantial part of the Contents into a new database is a Derivative Database
+and must comply with Section 4.4.
+
+c. Derivative Databases and Produced Works. A Derivative Database is Publicly
+Used and so must comply with Section 4.4. if a Produced Work created from
+the Derivative Database is Publicly Used.
+
+d. Share Alike and additional Contents. For the avoidance of doubt, You must
+not add Contents to Derivative Databases under Section 4.4 a that are incompatible
+with the rights granted under this License.
+
+e. Compatible licenses. Licensors may authorise a proxy to determine compatible
+licenses under Section 4.4 a iii. If they do so, the authorised proxy's public
+statement of acceptance of a compatible license grants You permission to use
+the compatible license.
+
+4.5 Limits of Share Alike. The requirements of Section 4.4 do not apply in
+the following:
+
+a. For the avoidance of doubt, You are not required to license Collective
+Databases under this License if You incorporate this Database or a Derivative
+Database in the collection, but this License still applies to this Database
+or a Derivative Database as a part of the Collective Database;
+
+b. Using this Database, a Derivative Database, or this Database as part of
+a Collective Database to create a Produced Work does not create a Derivative
+Database for purposes of Section 4.4; and
+
+c. Use of a Derivative Database internally within an organisation is not to
+the public and therefore does not fall under the requirements of Section 4.4.
+
+4.6 Access to Derivative Databases. If You Publicly Use a Derivative Database
+or a Produced Work from a Derivative Database, You must also offer to recipients
+of the Derivative Database or Produced Work a copy in a machine readable form
+of:
+
+ a. The entire Derivative Database; or
+
+b. A file containing all of the alterations made to the Database or the method
+of making the alterations to the Database (such as an algorithm), including
+any additional Contents, that make up all the differences between the Database
+and the Derivative Database.
+
+The Derivative Database (under a.) or alteration file (under b.) must be available
+at no more than a reasonable production cost for physical distributions and
+free of charge if distributed over the internet.
+
+ 4.7 Technological measures and additional terms
+
+a. This License does not allow You to impose (except subject to Section 4.7
+b.) any terms or any technological measures on the Database, a Derivative
+Database, or the whole or a Substantial part of the Contents that alter or
+restrict the terms of this License, or any rights granted under it, or have
+the effect or intent of restricting the ability of any person to exercise
+those rights.
+
+b. Parallel distribution. You may impose terms or technological measures on
+the Database, a Derivative Database, or the whole or a Substantial part of
+the Contents (a "Restricted Database") in contravention of Section 4.74 a.
+only if You also make a copy of the Database or a Derivative Database available
+to the recipient of the Restricted Database:
+
+ i. That is available without additional fee;
+
+ii. That is available in a medium that does not alter or restrict the terms
+of this License, or any rights granted under it, or have the effect or intent
+of restricting the ability of any person to exercise those rights (an "Unrestricted
+Database"); and
+
+iii. The Unrestricted Database is at least as accessible to the recipient
+as a practical matter as the Restricted Database.
+
+c. For the avoidance of doubt, You may place this Database or a Derivative
+Database in an authenticated environment, behind a password, or within a similar
+access control scheme provided that You do not alter or restrict the terms
+of this License or any rights granted under it or have the effect or intent
+of restricting the ability of any person to exercise those rights.
+
+4.8 Licensing of others. You may not sublicense the Database. Each time You
+communicate the Database, the whole or Substantial part of the Contents, or
+any Derivative Database to anyone else in any way, the Licensor offers to
+the recipient a license to the Database on the same terms and conditions as
+this License. You are not responsible for enforcing compliance by third parties
+with this License, but You may enforce any rights that You have over a Derivative
+Database. You are solely responsible for any modifications of a Derivative
+Database made by You or another Person at Your direction. You may not impose
+any further restrictions on the exercise of the rights granted or affirmed
+under this License.
+
+ 5.0 Moral rights
+
+5.1 Moral rights. This section covers moral rights, including any rights to
+be identified as the author of the Database or to object to treatment that
+would otherwise prejudice the author's honour and reputation, or any other
+derogatory treatment:
+
+a. For jurisdictions allowing waiver of moral rights, Licensor waives all
+moral rights that Licensor may have in the Database to the fullest extent
+possible by the law of the relevant jurisdiction under Section 10.4;
+
+b. If waiver of moral rights under Section 5.1 a in the relevant jurisdiction
+is not possible, Licensor agrees not to assert any moral rights over the Database
+and waives all claims in moral rights to the fullest extent possible by the
+law of the relevant jurisdiction under Section 10.4; and
+
+c. For jurisdictions not allowing waiver or an agreement not to assert moral
+rights under Section 5.1 a and b, the author may retain their moral rights
+over certain aspects of the Database.
+
+Please note that some jurisdictions do not allow for the waiver of moral rights,
+and so moral rights may still subsist over the Database in some jurisdictions.
+
+ 6.0 Fair dealing, Database exceptions, and other rights not affected
+
+6.1 This License does not affect any rights that You or anyone else may independently
+have under any applicable law to make any use of this Database, including
+without limitation:
+
+a. Exceptions to the Database Right including: Extraction of Contents from
+non-electronic Databases for private purposes, Extraction for purposes of
+illustration for teaching or scientific research, and Extraction or Re-utilisation
+for public security or an administrative or judicial procedure.
+
+b. Fair dealing, fair use, or any other legally recognised limitation or exception
+to infringement of copyright or other applicable laws.
+
+6.2 This License does not affect any rights of lawful users to Extract and
+Re-utilise insubstantial parts of the Contents, evaluated quantitatively or
+qualitatively, for any purposes whatsoever, including creating a Derivative
+Database (subject to other rights over the Contents, see Section 2.4). The
+repeated and systematic Extraction or Re-utilisation of insubstantial parts
+of the Contents may however amount to the Extraction or Re-utilisation of
+a Substantial part of the Contents.
+
+ 7.0 Warranties and Disclaimer
+
+7.1 The Database is licensed by the Licensor "as is" and without any warranty
+of any kind, either express, implied, or arising by statute, custom, course
+of dealing, or trade usage. Licensor specifically disclaims any and all implied
+warranties or conditions of title, non-infringement, accuracy or completeness,
+the presence or absence of errors, fitness for a particular purpose, merchantability,
+or otherwise. Some jurisdictions do not allow the exclusion of implied warranties,
+so this exclusion may not apply to You.
+
+ 8.0 Limitation of liability
+
+8.1 Subject to any liability that may not be excluded or limited by law, the
+Licensor is not liable for, and expressly excludes, all liability for loss
+or damage however and whenever caused to anyone by any use under this License,
+whether by You or by anyone else, and whether caused by any fault on the part
+of the Licensor or not. This exclusion of liability includes, but is not limited
+to, any special, incidental, consequential, punitive, or exemplary damages
+such as loss of revenue, data, anticipated profits, and lost business. This
+exclusion applies even if the Licensor has been advised of the possibility
+of such damages.
+
+8.2 If liability may not be excluded by law, it is limited to actual and direct
+financial loss to the extent it is caused by proved negligence on the part
+of the Licensor.
+
+ 9.0 Termination of Your rights under this License
+
+9.1 Any breach by You of the terms and conditions of this License automatically
+terminates this License with immediate effect and without notice to You. For
+the avoidance of doubt, Persons who have received the Database, the whole
+or a Substantial part of the Contents, Derivative Databases, or the Database
+as part of a Collective Database from You under this License will not have
+their licenses terminated provided their use is in full compliance with this
+License or a license granted under Section 4.8 of this License. Sections 1,
+2, 7, 8, 9 and 10 will survive any termination of this License.
+
+9.2 If You are not in breach of the terms of this License, the Licensor will
+not terminate Your rights under it.
+
+9.3 Unless terminated under Section 9.1, this License is granted to You for
+the duration of applicable rights in the Database.
+
+9.4 Reinstatement of rights. If you cease any breach of the terms and conditions
+of this License, then your full rights under this License will be reinstated:
+
+a. Provisionally and subject to permanent termination until the 60th day after
+cessation of breach;
+
+b. Permanently on the 60th day after cessation of breach unless otherwise
+reasonably notified by the Licensor; or
+
+c. Permanently if reasonably notified by the Licensor of the violation, this
+is the first time You have received notice of violation of this License from
+the Licensor, and You cure the violation prior to 30 days after your receipt
+of the notice.
+
+Persons subject to permanent termination of rights are not eligible to be
+a recipient and receive a license under Section 4.8.
+
+9.5 Notwithstanding the above, Licensor reserves the right to release the
+Database under different license terms or to stop distributing or making available
+the Database. Releasing the Database under different license terms or stopping
+the distribution of the Database will not withdraw this License (or any other
+license that has been, or is required to be, granted under the terms of this
+License), and this License will continue in full force and effect unless terminated
+as stated above.
+
+ 10.0 General
+
+10.1 If any provision of this License is held to be invalid or unenforceable,
+that must not affect the validity or enforceability of the remainder of the
+terms and conditions of this License and each remaining provision of this
+License shall be valid and enforced to the fullest extent permitted by law.
+
+10.2 This License is the entire agreement between the parties with respect
+to the rights granted here over the Database. It replaces any earlier understandings,
+agreements or representations with respect to the Database.
+
+10.3 If You are in breach of the terms of this License, You will not be entitled
+to rely on the terms of this License or to complain of any breach by the Licensor.
+
+10.4 Choice of law. This License takes effect in and will be governed by the
+laws of the relevant jurisdiction in which the License terms are sought to
+be enforced. If the standard suite of rights granted under applicable copyright
+law and Database Rights in the relevant jurisdiction includes additional rights
+not granted under this License, these additional rights are granted in this
+License in order to meet the terms of this License.
diff --git a/README.md b/README.md
index 7db80e4..7be6649 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,9 @@
+---
+SPDX-License-Identifier: CC-BY-SA-4.0
+SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+---
+
+
# README
This README would normally document whatever steps are necessary to get the
diff --git a/app/assets/stylesheets/agents.scss b/app/assets/stylesheets/agents.scss
new file mode 100644
index 0000000..ec9285d
--- /dev/null
+++ b/app/assets/stylesheets/agents.scss
@@ -0,0 +1,9 @@
+/*
+ * SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc
+ *
+ * SPDX-License-Identifier: LAL-1.3
+ */
+
+// Place all the styles related to the Agents controller here.
+// They will automatically be included in application.css.
+// You can use Sass (SCSS) here: https://sass-lang.com/
diff --git a/app/assets/stylesheets/application/_body.scss b/app/assets/stylesheets/application/_body.scss
index 088f173..06db39a 100644
--- a/app/assets/stylesheets/application/_body.scss
+++ b/app/assets/stylesheets/application/_body.scss
@@ -1,3 +1,8 @@
+/*
+ * SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc
+ *
+ * SPDX-License-Identifier: LAL-1.3
+ */
html {
color: var(--primary);
diff --git a/app/assets/stylesheets/application/_debug.scss b/app/assets/stylesheets/application/_debug.scss
index 75b1988..0e3aaa7 100644
--- a/app/assets/stylesheets/application/_debug.scss
+++ b/app/assets/stylesheets/application/_debug.scss
@@ -1,4 +1,10 @@
/*
+ * SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc
+ *
+ * SPDX-License-Identifier: LAL-1.3
+ */
+
+/*
DEBUG
*/
diff --git a/app/assets/stylesheets/application/_flash.scss b/app/assets/stylesheets/application/_flash.scss
index c373796..f168e68 100644
--- a/app/assets/stylesheets/application/_flash.scss
+++ b/app/assets/stylesheets/application/_flash.scss
@@ -1,4 +1,10 @@
/*
+ * SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc
+ *
+ * SPDX-License-Identifier: LAL-1.3
+ */
+
+/*
FLASH
*/
diff --git a/app/assets/stylesheets/application/_header.scss b/app/assets/stylesheets/application/_header.scss
index d0fd5b8..3c7d460 100644
--- a/app/assets/stylesheets/application/_header.scss
+++ b/app/assets/stylesheets/application/_header.scss
@@ -1,3 +1,9 @@
+/*
+ * SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc
+ *
+ * SPDX-License-Identifier: LAL-1.3
+ */
+
/* -----------------------------------------------------------------------------
HEADER
----------------------------------------------------------------------------- */
diff --git a/app/assets/stylesheets/application/_map.scss b/app/assets/stylesheets/application/_map.scss
index d6f66f7..e474843 100644
--- a/app/assets/stylesheets/application/_map.scss
+++ b/app/assets/stylesheets/application/_map.scss
@@ -1,4 +1,10 @@
/*
+ * SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc
+ *
+ * SPDX-License-Identifier: LAL-1.3
+ */
+
+/*
MAP
*/
diff --git a/app/assets/stylesheets/application/_user_info.scss b/app/assets/stylesheets/application/_user_info.scss
index cb0d159..765be0a 100644
--- a/app/assets/stylesheets/application/_user_info.scss
+++ b/app/assets/stylesheets/application/_user_info.scss
@@ -1,3 +1,9 @@
+/*
+ * SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc
+ *
+ * SPDX-License-Identifier: LAL-1.3
+ */
+
/* -----------------------------------------------------------------------------
User Info
----------------------------------------------------------------------------- */
diff --git a/app/assets/stylesheets/categories.scss b/app/assets/stylesheets/categories.scss
new file mode 100644
index 0000000..6e6299f
--- /dev/null
+++ b/app/assets/stylesheets/categories.scss
@@ -0,0 +1,9 @@
+/*
+ * SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc
+ *
+ * SPDX-License-Identifier: LAL-1.3
+ */
+
+// Place all the styles related to the Categories controller here.
+// They will automatically be included in application.css.
+// You can use Sass (SCSS) here: https://sass-lang.com/
diff --git a/app/assets/stylesheets/resources.scss b/app/assets/stylesheets/resources.scss
index 5f2717f..eb7411b 100644
--- a/app/assets/stylesheets/resources.scss
+++ b/app/assets/stylesheets/resources.scss
@@ -1,3 +1,9 @@
+/*
+ * SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc
+ *
+ * SPDX-License-Identifier: LAL-1.3
+ */
+
// Place all the styles related to the Resources controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: https://sass-lang.com/
diff --git a/app/assets/stylesheets/taxonomies.scss b/app/assets/stylesheets/taxonomies.scss
new file mode 100644
index 0000000..446fd20
--- /dev/null
+++ b/app/assets/stylesheets/taxonomies.scss
@@ -0,0 +1,82 @@
+/*
+ * SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc
+ *
+ * SPDX-License-Identifier: LAL-1.3
+ */
+
+body>aside {
+ width: auto;
+
+ span[data-target="taxonomy.filter"] {
+ z-index: 990;
+ background: var(--icon-menu-on) top left/32px no-repeat;
+ width: 32px;
+ height: 32px;
+ position: absolute;
+ top: 6.1rem;
+ left: 10px;
+
+ &.off {
+ background-image: var(--icon-menu-off);
+ }
+ &.on {
+ background-image: var(--icon-menu-on);
+ }
+ }
+
+ nav {
+ z-index: 900;
+ position: fixed;
+ top: 5.5rem;
+ bottom: 0;
+ margin: 0;
+ padding: 0;
+ background-color: var(--incommon-blue);
+ display: block;
+ border-top-right-radius: 1rem;
+ width: 20rem;
+ height: calc(100% - 7.5rem);
+ padding-top: 48px;
+ }
+}
+
+/* Dewey Taxonomy */
+#taxonomy-2519915f-d19c-4281-b758-f5ddb889d7fa {
+ ol {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+
+ li {
+ padding: 0.5rem 1rem;
+ }
+
+ ol {
+ display: none;
+ }
+ ol.active {
+ font-weight: bold;
+ text-align: right;
+ li {
+ display: initial;
+ &.active {
+ font-weight: bold;
+ text-align: right;
+ }
+ }
+ }
+ }
+
+ #category-30 { background-color: #BCBCBC; }
+ #category-31 { background-color: #95a5a6; }
+ #category-32 { background-color: #848482; }
+ #category-33 { background-color: #948279; }
+ #category-34 { background-color: #59706a; }
+ #category-35 { background-color: #16a085; }
+ #category-36 { background-color: #27ae60; }
+ #category-37 { background-color: #2980b9; }
+ #category-38 { background-color: #34495e; }
+ #category-39 { background-color: #bd3525; }
+ #category-40 { background-color: #d35400; }
+ #category-42 { background-color: #eead0e; }
+}
diff --git a/app/assets/stylesheets/users.scss b/app/assets/stylesheets/users.scss
index aaf17f7..38fcd72 100644
--- a/app/assets/stylesheets/users.scss
+++ b/app/assets/stylesheets/users.scss
@@ -1,3 +1,9 @@
+/*
+ * SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc
+ *
+ * SPDX-License-Identifier: LAL-1.3
+ */
+
// Place all the styles related to the users controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: https://sass-lang.com/
diff --git a/app/assets/stylesheets/welcome.scss b/app/assets/stylesheets/welcome.scss
index d7704ef..aae15d5 100644
--- a/app/assets/stylesheets/welcome.scss
+++ b/app/assets/stylesheets/welcome.scss
@@ -1,3 +1,9 @@
+/*
+ * SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc
+ *
+ * SPDX-License-Identifier: LAL-1.3
+ */
+
// Place all the styles related to the welcome controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: https://sass-lang.com/
diff --git a/app/controllers/agents_controller.rb b/app/controllers/agents_controller.rb
new file mode 100644
index 0000000..105e443
--- /dev/null
+++ b/app/controllers/agents_controller.rb
@@ -0,0 +1,91 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+class AgentsController < ApplicationController
+ before_action :set_agent, only: [:new, :show, :edit, :update, :delete, :destroy]
+
+ # GET /agents
+ def index
+ @agents = Agent.order(:name).page params[:page]
+ end
+
+ # GET /agents/new
+ def new
+ end
+
+ # POST /agents
+ def create
+ flash.now[:alert] = 'Agents are created from actual groups for now...'
+ render :new
+ end
+
+ # GET /agents/:id
+ def show
+ end
+
+ # GET /agents/:id/edit
+ def edit
+ flash.now[:notice] = 'Please ask a maintainer to edit this resource!' unless current_user_maintainer?
+ end
+
+ # PATCH /agents/:id
+ def update
+ # Check list:
+ # 1. Compare records for changes
+ # 2. Validate each change
+ # 3. Moderate queue or save
+
+ return 403 unless current_user_maintainer?
+
+ respond_to do |format|
+ if @agent.update(agent_params)
+ format.html { redirect_to @agent, notice: 'Merci de votre contribution !' }
+ format.json { render :show, status: :ok, location: @agent }
+ else
+ format.html { render :edit }
+ format.json { render json: @agent.errors, status: :unprocessable_entity }
+ end
+ end
+ end
+
+ # GET /agents/:id/delete
+ def delete
+ flash.now[:notice] = 'Please ask a maintainer to delete your Agent!' unless current_user_maintainer?
+ end
+
+ # DELETE /agents/:id
+ def destroy
+ return 403 # Yeah, right?
+ # Check list
+ # 1. User belongs to Agent and is :maintainer?
+ if !(current_user_maintainer? && current_user_leader?)
+ msg = 'You must be a maintainer and a leader to delete your Agent!'
+ respond_to do |format|
+ format.html { redirect_to :show, notice: msg }
+ format.json { render json: '{}', status: :forbidden, message: msg }
+ end
+ else
+ @agent.destroy
+ respond_to do |format|
+ format.html { redirect_to :index, notice: 'OK, resource Agent successfully removed.' }
+ format.json { head :no_content }
+ end
+ end
+ end
+
+ private
+
+ def agent_params
+ params
+ .require(:agent)
+ .permit(:uuid,
+ :name,
+ :summary,
+ :description)
+ end
+
+ def set_agent
+ @agent = Agent.find_by(uuid: params[:id]) || Agent.new
+ end
+end
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 14f50bf..5299f54 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -1,6 +1,8 @@
-class ApplicationController < ActionController::Base
- protect_from_forgery with: :null_session
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+class ApplicationController < ActionController::Base
require 'sso'
before_action :current_user
diff --git a/app/controllers/categories_controller.rb b/app/controllers/categories_controller.rb
new file mode 100644
index 0000000..40f1ff5
--- /dev/null
+++ b/app/controllers/categories_controller.rb
@@ -0,0 +1,23 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+class CategoriesController < ApplicationController
+ before_action :set_category, only: [:new, :show, :edit, :update, :delete, :destroy]
+
+ def index
+ end
+
+ def show
+ @category = Category.find(params[:id])
+ end
+
+ def edit
+ end
+
+ private
+
+ def set_category
+ @category = Category.find_by(id: params[:id]) || Category.new
+ end
+end
diff --git a/app/controllers/my/agent_controller.rb b/app/controllers/my/agent_controller.rb
index ac761b7..6da2642 100644
--- a/app/controllers/my/agent_controller.rb
+++ b/app/controllers/my/agent_controller.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
class My::AgentController < ApplicationController
# PATCH /my/current_agent
def switch
diff --git a/app/controllers/resources_controller.rb b/app/controllers/resources_controller.rb
index 04d4e70..52d89ea 100644
--- a/app/controllers/resources_controller.rb
+++ b/app/controllers/resources_controller.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
class ResourcesController < ApplicationController
before_action :set_resource, only: [:new, :show, :edit, :update, :delete, :destroy]
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 2cfa2ab..9a3cf74 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
class UsersController < ApplicationController
# GET /my/users
# If you're a leader, you will see a list of Agent members
diff --git a/app/controllers/welcome_controller.rb b/app/controllers/welcome_controller.rb
index ee76eb6..e7743e8 100644
--- a/app/controllers/welcome_controller.rb
+++ b/app/controllers/welcome_controller.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
class WelcomeController < ApplicationController
# GET /
def index
diff --git a/app/helpers/agents_helper.rb b/app/helpers/agents_helper.rb
index 7e54438..bbaeeca 100644
--- a/app/helpers/agents_helper.rb
+++ b/app/helpers/agents_helper.rb
@@ -1,2 +1,6 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
module AgentsHelper
end
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index aa3a8d7..15d5082 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
module ApplicationHelper
def current_agency
current_user.agencies.where(agent: current_agent).first
@@ -21,4 +25,47 @@ module ApplicationHelper
'map-zoom': map.zoom
})
end
+
+ # Markdown helper
+ # Always use all extensions. Additional parser and render options may be
+ # passed as a second argument.
+ #
+ # @param markdown (String) a string to parse as Markdown source
+ # @param options (String or Array) an optional parser/renderer option
+ # @return String HTML-formatted from Mardkown source
+ def m(markdown, options = nil)
+ tag.div(
+ CommonMarker.render_doc(
+ markdown.to_s,
+ options.to_a + default_commonmarker_options,
+ default_commonmarker_extensions
+ ).to_html.html_safe, class: 'markdown')
+ end
+
+ private
+
+ # CommonMarker extensions
+ # See https://github.com/gjtorikian/commonmarker#extensions
+ def default_commonmarker_extensions
+ [
+ :table,
+ :tasklist,
+ :strikethrough,
+ :autolink,
+ :tagfilter
+ ]
+ end
+
+ # CommonMarker options
+ # See https://github.com/gjtorikian/commonmarker#options
+ def default_commonmarker_options
+ [
+ #:HARDBREAKS, # only seems to work with render_html, but then all others
+ # only work with render_doc
+ :FOOTNOTES,
+ :SMART,
+ :STRIKETHROUGH_DOUBLE_TILDE,
+ :VALIDATE_UTF8
+ ]
+ end
end
diff --git a/app/helpers/categories_helper.rb b/app/helpers/categories_helper.rb
new file mode 100644
index 0000000..f6d7a86
--- /dev/null
+++ b/app/helpers/categories_helper.rb
@@ -0,0 +1,6 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+module CategoriesHelper
+end
diff --git a/app/helpers/resources_helper.rb b/app/helpers/resources_helper.rb
index 157a8f5..a949311 100644
--- a/app/helpers/resources_helper.rb
+++ b/app/helpers/resources_helper.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
module ResourcesHelper
# Return a SELECT tag to choose a section in a given taxonomy
def section_select(taxonomy, selected = nil)
diff --git a/app/helpers/taxonomies_helper.rb b/app/helpers/taxonomies_helper.rb
new file mode 100644
index 0000000..a584177
--- /dev/null
+++ b/app/helpers/taxonomies_helper.rb
@@ -0,0 +1,23 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+# coding: utf-8
+# frozen_string_literal: true
+
+module TaxonomiesHelper
+ def taxonomy_filter
+ @taxonomy ||= Taxonomy.first
+ html = []
+ @taxonomy.categories.each do |cat|
+ list = []
+ cat.sections.each do |sec|
+ list << tag.li(h("#{sec.rank}. #{sec.name}"), id: "section-#{sec.id}", data: { action: "taxonomy#section" })
+ end
+ html << tag.li(h("#{cat.rank}. #{cat.name}") << tag.ol(list.join.html_safe),
+ id: "category-#{cat.id}",
+ data: { action: "taxonomy#category" })
+ end
+ raw(tag.nav(tag.ol(html.join.html_safe), id: "taxonomy-#{@taxonomy.uuid}"))
+ end
+end
diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb
index 2310a24..0adb3be 100644
--- a/app/helpers/users_helper.rb
+++ b/app/helpers/users_helper.rb
@@ -1,2 +1,6 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
module UsersHelper
end
diff --git a/app/helpers/welcome_helper.rb b/app/helpers/welcome_helper.rb
index eeead45..8e575f1 100644
--- a/app/helpers/welcome_helper.rb
+++ b/app/helpers/welcome_helper.rb
@@ -1,2 +1,6 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
module WelcomeHelper
end
diff --git a/app/jobs/agency_watcher_job.rb b/app/jobs/agency_watcher_job.rb
index 5d154be..23266e8 100644
--- a/app/jobs/agency_watcher_job.rb
+++ b/app/jobs/agency_watcher_job.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
# frozen_string_literal: true
# = AgencyWatcherJob
diff --git a/app/jobs/application_job.rb b/app/jobs/application_job.rb
index d394c3d..9f811cb 100644
--- a/app/jobs/application_job.rb
+++ b/app/jobs/application_job.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
class ApplicationJob < ActiveJob::Base
# Automatically retry jobs that encountered a deadlock
# retry_on ActiveRecord::Deadlocked
diff --git a/app/lib/incommon.rb b/app/lib/incommon.rb
new file mode 100644
index 0000000..091f022
--- /dev/null
+++ b/app/lib/incommon.rb
@@ -0,0 +1,6 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+module INCOMMON
+end
diff --git a/app/lib/sso.rb b/app/lib/sso.rb
index 0939a7c..088f436 100644
--- a/app/lib/sso.rb
+++ b/app/lib/sso.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2018-2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
# frozen_string_literal: true
# Perform Single Sign-On using Discourse
diff --git a/app/lib/sso/from_discourse.rb b/app/lib/sso/from_discourse.rb
index a5df192..94969c9 100644
--- a/app/lib/sso/from_discourse.rb
+++ b/app/lib/sso/from_discourse.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2018-2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
# frozen_string_literal: true
module SSO
diff --git a/app/mailers/application_mailer.rb b/app/mailers/application_mailer.rb
index 286b223..1900454 100644
--- a/app/mailers/application_mailer.rb
+++ b/app/mailers/application_mailer.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
class ApplicationMailer < ActionMailer::Base
default from: 'from@example.com'
layout 'mailer'
diff --git a/app/models/agency.rb b/app/models/agency.rb
index 03e6e5a..7ffe489 100644
--- a/app/models/agency.rb
+++ b/app/models/agency.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
class Agency < ApplicationRecord
include Bitfields
diff --git a/app/models/agent.rb b/app/models/agent.rb
index 6264ba3..28ba579 100644
--- a/app/models/agent.rb
+++ b/app/models/agent.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
class Agent < ApplicationRecord
has_many :agencies
has_many :members, through: :agencies, source: :user
diff --git a/app/models/application_record.rb b/app/models/application_record.rb
index 10a4cba..81dc6c5 100644
--- a/app/models/application_record.rb
+++ b/app/models/application_record.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end
diff --git a/app/models/category.rb b/app/models/category.rb
index b8c49f1..6868bf7 100644
--- a/app/models/category.rb
+++ b/app/models/category.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
class Category < ApplicationRecord
belongs_to :taxonomy
has_many :sections,
diff --git a/app/models/classification.rb b/app/models/classification.rb
index c384aa7..0754054 100644
--- a/app/models/classification.rb
+++ b/app/models/classification.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
class Classification < ApplicationRecord
belongs_to :resource
belongs_to :section
diff --git a/app/models/resource.rb b/app/models/resource.rb
index 7d87e1a..8df106c 100644
--- a/app/models/resource.rb
+++ b/app/models/resource.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
require_dependency 'phony_rails'
class Resource < ApplicationRecord
diff --git a/app/models/schemas/resource_feature_properties.json b/app/models/schemas/resource_feature_properties.json
index 84cd6ae..888b546 100644
--- a/app/models/schemas/resource_feature_properties.json
+++ b/app/models/schemas/resource_feature_properties.json
@@ -1,3 +1,7 @@
+/**
+ * SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+ * SPDX-License-Identifier: CC-BY-SA-4.0
+**/
// JSON Schema for Resource#feature
{
"$schema": "http://json-schema.org/draft-07/schema#",
diff --git a/app/models/section.rb b/app/models/section.rb
index 7d26882..16213c7 100644
--- a/app/models/section.rb
+++ b/app/models/section.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
class Section < ApplicationRecord
belongs_to :category
has_one :taxonomy, through: :category
diff --git a/app/models/taxonomy.rb b/app/models/taxonomy.rb
index 0810fc0..34f65f6 100644
--- a/app/models/taxonomy.rb
+++ b/app/models/taxonomy.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
class Taxonomy < ApplicationRecord
# Universally Unique Identifier :uuid
include UUIDParameter
diff --git a/app/models/user.rb b/app/models/user.rb
index f7e96a8..9b199ac 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
class User < ApplicationRecord
has_many :agencies
has_many :agents, through: :agencies, source: :agent
diff --git a/app/validators/email_validator.rb b/app/validators/email_validator.rb
new file mode 100644
index 0000000..4191907
--- /dev/null
+++ b/app/validators/email_validator.rb
@@ -0,0 +1,33 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+# frozen_string_literal: true
+
+# = Email Validator =
+#
+# In order to be considered valid, value must be:
+#
+# - a valid Email URI
+# - parsable as an URI
+# - have a hostname
+# - have a valid public TLD
+#
+class EmailValidator < ActiveModel::EachValidator
+ def validate_each(record, attribute, value)
+ unless valid_email_address?(value)
+ record.errors[attribute] << (options[:message] || 'is an invalid email address')
+ end
+ end
+
+ private
+
+ def valid_email_address?(value)
+ uri = URI.parse("mailto:#{value}")
+ uri.is_a?(URI::MailTo) &&
+ uri.to == value &&
+ IANA::TLD.valid?(value.split('@', 2).last.split('.').compact.last)
+ rescue URI::InvalidURIError, URI::InvalidComponentError
+ false
+ end
+end
diff --git a/app/validators/url_validator.rb b/app/validators/url_validator.rb
new file mode 100644
index 0000000..5f790b3
--- /dev/null
+++ b/app/validators/url_validator.rb
@@ -0,0 +1,33 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+# frozen_string_literal: true
+
+# = URL Validator =
+#
+# In order to be considered valid, value must be:
+#
+# - parsable as an URI
+# - use the http or https scheme
+# - have a hostname
+# - have a valid public TLD
+#
+class UrlValidator < ActiveModel::EachValidator
+ def validate_each(record, attribute, value)
+ unless valid_web_address?(value)
+ record.errors[attribute] << (options[:message] || 'is an invalid Web URL')
+ end
+ end
+
+ private
+
+ def valid_web_address?(value)
+ uri = URI.parse(value)
+ uri.is_a?(URI::HTTP) &&
+ uri.host.present? &&
+ IANA::TLD.valid?(uri.host.split('.').compact.last)
+ rescue URI::InvalidURIError
+ false
+ end
+end
diff --git a/app/views/application/_current_agent_link.html.erb b/app/views/application/_current_agent_link.html.erb
new file mode 100644
index 0000000..58bf5fb
--- /dev/null
+++ b/app/views/application/_current_agent_link.html.erb
@@ -0,0 +1 @@
+<%= render partial: 'current_agent_switch' %>
diff --git a/app/views/application/_current_agent_switch.html.erb b/app/views/application/_current_agent_switch.html.erb
new file mode 100644
index 0000000..f19f26b
--- /dev/null
+++ b/app/views/application/_current_agent_switch.html.erb
@@ -0,0 +1,4 @@
+<%= form_for current_agent, url: '/my/current_agent', method: :patch do |f| %>
+ <%= f.select(:id, options_for_select(current_user.agents.map { |a| [a.name, a.id] }, selected: current_agent.id), title: "Sélectionner l'agent en cours") %>
+ <%= f.submit(" » ", title: "Activer cet Agent") %>
+<% end %>
diff --git a/app/views/application/_taxonomy_nav.html.erb b/app/views/application/_taxonomy_nav.html.erb
new file mode 100644
index 0000000..2203665
--- /dev/null
+++ b/app/views/application/_taxonomy_nav.html.erb
@@ -0,0 +1,6 @@
+<% out = []
+clazo.each do |c| %>
+ <%= tag.span(taxo.name) %> »
+ <%= link_to(c.section.category.name, c.section.category) %> »
+ <%= link_to(c.section.name, c.section) %> »
+<% end %>
diff --git a/app/views/resources/_resource.html.erb b/app/views/resources/_resource.html.erb
index 652da59..37c0d66 100644
--- a/app/views/resources/_resource.html.erb
+++ b/app/views/resources/_resource.html.erb
@@ -5,7 +5,7 @@
<time datetime="<%= h resource.updated_at %>" class="updated_at">
<p class="identifier"><%= resource_url(resource) %></p>
</header>
- <div><%= h resource.description %></div>
+ <%= m resource.description %>
<hr>
<code><pre><%= h JSON.pretty_generate(resource.feature.as_json) %></pre></code>
<nav>
diff --git a/config/database.yml b/config/database.yml
index 74519f2..1912468 100644
--- a/config/database.yml
+++ b/config/database.yml
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2004-2020 David Heinemeier Hansson
+#
+# SPDX-License-Identifier: MIT
+#
# PostgreSQL. Versions 9.3 and up are supported.
#
# Install the pg driver:
diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb
index 13e8739..2292fab 100644
--- a/config/initializers/inflections.rb
+++ b/config/initializers/inflections.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
# Be sure to restart your server when you modify this file.
# Add new inflection rules using the following format. Inflections
@@ -19,4 +23,5 @@ ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'human', 'humans'
inflect.acronym 'API'
inflect.acronym 'SSO'
+ inflect.acronym 'INCOMMON'
end
diff --git a/config/initializers/kaminari_config.rb b/config/initializers/kaminari_config.rb
index 4ba6ee3..2165cf2 100644
--- a/config/initializers/kaminari_config.rb
+++ b/config/initializers/kaminari_config.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2011 Akira Matsuda
+#
+# SPDX-License-Identifier: MIT
+
# frozen_string_literal: true
Kaminari.configure do |config|
diff --git a/config/initializers/sso_config.rb b/config/initializers/sso_config.rb
index d88b595..cf3bf3f 100644
--- a/config/initializers/sso_config.rb
+++ b/config/initializers/sso_config.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2018-2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
# frozen_string_literal: true
# See lib/sso/from_discourse.rb
diff --git a/config/locales/en.yml b/config/locales/en.yml
index cf9b342..125f659 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc
+#
+# SPDX-License-Identifier: LAL-1.3
+
# Files in the config/locales directory are used for internationalization
# and are automatically loaded by Rails. If you want to use locales other
# than English, add the necessary files in this directory.
diff --git a/config/puma.rb b/config/puma.rb
index 98bdd50..8879c35 100644
--- a/config/puma.rb
+++ b/config/puma.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2004-2020 David Heinemeier Hansson
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+# SPDX-License-Identifier: MIT
+
# Puma can serve each request in a thread from an internal thread pool.
# The `threads` method setting takes two numbers: a minimum and maximum.
# Any libraries that use thread pools should be configured to match
diff --git a/config/routes.rb b/config/routes.rb
index 0de14b5..a3fcf8c 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,3 +1,6 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
Rails.application.routes.draw do
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
diff --git a/doc/import/Concertes/How to read files.txt b/doc/import/Concertes/How to read files.txt
index 2c427cc..1c7dd3c 100644
--- a/doc/import/Concertes/How to read files.txt
+++ b/doc/import/Concertes/How to read files.txt
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc
+#
+# SPDX-License-Identifier: CC-BY-SA-4.0
+
Nom
Se trouve dans le fichier EntreprisesSignaletique.csv
Description
diff --git a/doc/import/LocationsParser.rb b/doc/import/LocationsParser.rb
index 3ce79c0..9a8eba5 100644
--- a/doc/import/LocationsParser.rb
+++ b/doc/import/LocationsParser.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
#This file parses the data from the "Concertes" and "Dewey" folders
#It creates a file "Locations.geojson" which is in the geoJson format to be used with a map
@@ -10,6 +14,18 @@ class Parser
@list_of_locations["type"] = "FeatureCollection"
@list_of_locations["features"] = []
end
+ def sanitize(data)
+ #Sanitize data. Puts "" instead of null in empty data, and puts "" instead of "/"
+ if (data == nil)
+ data = ""
+ end
+ data = data.strip
+ res = data
+ if (data == "/")
+ res = ""
+ end
+ return res
+ end
def parseDeweyFiles(data_file)
#Parses the .json files contained in the Dewey folder
data = JSON.parse(File.read(data_file))
@@ -27,9 +43,9 @@ class Parser
new_item["properties"]["name"] = data[i]["fields"]["name"]
new_item["properties"]["description"] = data[i]["fields"]["comment"]
new_item["properties"]["entry_number"] = data[i]["pk"]
- new_item["properties"]["phone_number"] = data[i]["fields"]["phone"]
- new_item["properties"]["website"] = data[i]["fields"]["web"]
- new_item["properties"]["email"] = data[i]["fields"]["email"]
+ new_item["properties"]["phone_number"] = sanitize(data[i]["fields"]["phone"])
+ new_item["properties"]["website"] = sanitize(data[i]["fields"]["web"])
+ new_item["properties"]["email"] = sanitize(data[i]["fields"]["email"])
new_item["properties"]["address"] = data[i]["fields"]["address"]
new_item["properties"]["city"] = "" #No equivalent in Dewey data
new_item["properties"]["postal_code"] = "" #No equivalent in Dewey data
@@ -55,9 +71,9 @@ class Parser
new_item["properties"]["name"] = data[i]["Denomination_FULL"]
new_item["properties"]["description"] = data[i]["description"]
new_item["properties"]["entry_number"] = data[i]["NumEntr"]
- new_item["properties"]["phone_number"] = coord[i]["Tel"]
- new_item["properties"]["website"] = coord[i]["Web"]
- new_item["properties"]["email"] = coord[i]["Email"]
+ new_item["properties"]["phone_number"] = sanitize(coord[i]["Tel"])
+ new_item["properties"]["website"] = sanitize(coord[i]["Web"])
+ new_item["properties"]["email"] = sanitize(coord[i]["Email"])
new_item["properties"]["address"] = coord[i]["Adresse"]
new_item["properties"]["city"] = data[i]["INS_COMMUNE"]
new_item["properties"]["postal_code"] = coord[i]["Code postal"]
diff --git a/doc/import/README.md b/doc/import/README.md
index f5c4096..92108a3 100644
--- a/doc/import/README.md
+++ b/doc/import/README.md
@@ -1,3 +1,9 @@
+<!--
+SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc>
+
+SPDX-License-Identifier: CC-BY-SA-4.0
+-->
+
## Parsing Resources
The script `parser.rb` creates a file named `Locations.geojson`, which contains
diff --git a/doc/import/dewey-maps-categories-en.json b/doc/import/dewey-maps-categories-en.json
new file mode 100644
index 0000000..96a8441
--- /dev/null
+++ b/doc/import/dewey-maps-categories-en.json
@@ -0,0 +1,526 @@
+[
+ {
+ "id": 8,
+ "name": "Housing and Dwelling",
+ "subcategories": [
+ {
+ "id": 148,
+ "name": "Campings"
+ },
+ {
+ "id": 158,
+ "name": "Care home"
+ },
+ {
+ "id": 130,
+ "name": "Community land trust"
+ },
+ {
+ "id": 198,
+ "name": "Community living (for the homeless)"
+ },
+ {
+ "id": 150,
+ "name": "Homeless shelters (by night)"
+ },
+ {
+ "id": 149,
+ "name": "Hostels"
+ },
+ {
+ "id": 165,
+ "name": "Housing cooperatives"
+ },
+ {
+ "id": 131,
+ "name": "Legalized squat"
+ },
+ {
+ "id": 168,
+ "name": "Participatory housing, cohousing"
+ },
+ {
+ "id": 164,
+ "name": "Renters cooperatives"
+ },
+ {
+ "id": 114,
+ "name": "Right to housing"
+ }
+ ],
+ "color": "BCBCBC"
+ },
+ {
+ "id": 6,
+ "name": "Drinking and Eating",
+ "subcategories": [
+ {
+ "id": 155,
+ "name": "Aromatic plants"
+ },
+ {
+ "id": 27,
+ "name": "Community-Supported Agriculture (groups)"
+ },
+ {
+ "id": 185,
+ "name": "Community-Supported Agriculture (producers)"
+ },
+ {
+ "id": 180,
+ "name": "Cooking Classes"
+ },
+ {
+ "id": 115,
+ "name": "Drinkable water"
+ },
+ {
+ "id": 182,
+ "name": "Food advise"
+ },
+ {
+ "id": 154,
+ "name": "Free lunches"
+ },
+ {
+ "id": 170,
+ "name": "Market"
+ },
+ {
+ "id": 28,
+ "name": "Recuperation of food products"
+ },
+ {
+ "id": 123,
+ "name": "Small Breweries"
+ },
+ {
+ "id": 135,
+ "name": "Social Grocery Stores"
+ },
+ {
+ "id": 118,
+ "name": "Social Restaurants"
+ }
+ ],
+ "color": "95A5A6"
+ },
+ {
+ "id": 11,
+ "name": "Getting Clean and Clothed",
+ "subcategories": [
+ {
+ "id": 46,
+ "name": "Give-away shops"
+ },
+ {
+ "id": 210,
+ "name": "Give Boxes"
+ },
+ {
+ "id": 144,
+ "name": "Public showers"
+ },
+ {
+ "id": 207,
+ "name": "Public toilets"
+ },
+ {
+ "id": 104,
+ "name": "Second-hand clothes"
+ },
+ {
+ "id": 156,
+ "name": "Social Clothing Store"
+ }
+ ],
+ "color": "848482"
+ },
+ {
+ "id": 12,
+ "name": "Lighting Up and Warming Up",
+ "subcategories": [
+ {
+ "id": 122,
+ "name": "Energy advisors"
+ },
+ {
+ "id": 195,
+ "name": "Homeless booths"
+ },
+ {
+ "id": 176,
+ "name": "Solar techniques"
+ },
+ {
+ "id": 134,
+ "name": "Support for renovation"
+ }
+ ],
+ "color": "948279"
+ },
+ {
+ "id": 10,
+ "name": "Healing and Caring",
+ "subcategories": [
+ {
+ "id": 18,
+ "name": "Community health center"
+ },
+ {
+ "id": 192,
+ "name": "Control of addictions"
+ },
+ {
+ "id": 199,
+ "name": "Defibrillators (free access)"
+ },
+ {
+ "id": 145,
+ "name": "Health networks"
+ },
+ {
+ "id": 157,
+ "name": "Health services for the homeless"
+ },
+ {
+ "id": 190,
+ "name": "Mental health associations"
+ },
+ {
+ "id": 143,
+ "name": "Palliative care associations"
+ },
+ {
+ "id": 208,
+ "name": "Public hospitals"
+ },
+ {
+ "id": 191,
+ "name": "Therapeutic communities"
+ }
+ ],
+ "color": "59706a"
+ },
+ {
+ "id": 1,
+ "name": "Recycling and Repairing",
+ "subcategories": [
+ {
+ "id": 50,
+ "name": "Book boxes"
+ },
+ {
+ "id": 132,
+ "name": "Community composting"
+ },
+ {
+ "id": 120,
+ "name": "Flea market"
+ },
+ {
+ "id": 205,
+ "name": "Glass recycling"
+ },
+ {
+ "id": 42,
+ "name": "Repair cafés"
+ },
+ {
+ "id": 113,
+ "name": "Reused building materials"
+ },
+ {
+ "id": 47,
+ "name": "Reused computer material"
+ },
+ {
+ "id": 136,
+ "name": "Reusing inkcartridges"
+ },
+ {
+ "id": 206,
+ "name": "Used clothes bins"
+ },
+ {
+ "id": 138,
+ "name": "Woodworking workshops"
+ }
+ ],
+ "color": "16A085"
+ },
+ {
+ "id": 7,
+ "name": "Breathing and Going Green",
+ "subcategories": [
+ {
+ "id": 127,
+ "name": "Beekeeping associations"
+ },
+ {
+ "id": 121,
+ "name": "Community composting"
+ },
+ {
+ "id": 194,
+ "name": "Naturalist association"
+ },
+ {
+ "id": 133,
+ "name": "Natural reserves"
+ },
+ {
+ "id": 129,
+ "name": "Public parcs"
+ },
+ {
+ "id": 125,
+ "name": "Seed exchange"
+ },
+ {
+ "id": 128,
+ "name": "Support for gardeners"
+ },
+ {
+ "id": 116,
+ "name": "Vegetable gardens"
+ }
+ ],
+ "color": "27AE60"
+ },
+ {
+ "id": 3,
+ "name": "Meeting and Helping Each Other",
+ "subcategories": [
+ {
+ "id": 202,
+ "name": "Associations for gender equality"
+ },
+ {
+ "id": 204,
+ "name": "Community centers NL"
+ },
+ {
+ "id": 211,
+ "name": "Complementary currency"
+ },
+ {
+ "id": 209,
+ "name": "International cooperation and solidarity"
+ },
+ {
+ "id": 184,
+ "name": "Local exchange trading system"
+ },
+ {
+ "id": 102,
+ "name": "Neighborhood Committees"
+ },
+ {
+ "id": 10,
+ "name": "Neighborhood houses"
+ },
+ {
+ "id": 197,
+ "name": "Recent immigrants welcoming"
+ },
+ {
+ "id": 188,
+ "name": "Refugees welcome"
+ },
+ {
+ "id": 119,
+ "name": "School Support Associations"
+ },
+ {
+ "id": 14,
+ "name": "Support for family and children"
+ },
+ {
+ "id": 16,
+ "name": "Support for people with disabilities"
+ },
+ {
+ "id": 19,
+ "name": "Support for seniors"
+ },
+ {
+ "id": 193,
+ "name": "Support for the homeless"
+ },
+ {
+ "id": 201,
+ "name": "Transition initiatives"
+ },
+ {
+ "id": 15,
+ "name": "Women's association"
+ },
+ {
+ "id": 17,
+ "name": "Youth House"
+ }
+ ],
+ "color": "2980B9"
+ },
+ {
+ "id": 2,
+ "name": "Learning and Training",
+ "subcategories": [
+ {
+ "id": 187,
+ "name": "Adapted work companies"
+ },
+ {
+ "id": 13,
+ "name": "Adult and continuing education"
+ },
+ {
+ "id": 87,
+ "name": "Coworking, shared offices"
+ },
+ {
+ "id": 91,
+ "name": "Defense of cultural heritage"
+ },
+ {
+ "id": 92,
+ "name": "Public libraries"
+ },
+ {
+ "id": 12,
+ "name": "Support fo local economy"
+ },
+ {
+ "id": 103,
+ "name": "Training centres"
+ },
+ {
+ "id": 90,
+ "name": "Urban ecology associations"
+ }
+ ],
+ "color": "34495E"
+ },
+ {
+ "id": 13,
+ "name": "Expressing Yourself and Communicating",
+ "subcategories": [
+ {
+ "id": 124,
+ "name": "Free Internet access"
+ },
+ {
+ "id": 174,
+ "name": "Free Software Associations"
+ },
+ {
+ "id": 43,
+ "name": "Hackerspaces"
+ },
+ {
+ "id": 109,
+ "name": "Independent media"
+ },
+ {
+ "id": 177,
+ "name": "Scrivener"
+ }
+ ],
+ "color": "BD3525"
+ },
+ {
+ "id": 9,
+ "name": "Transportation and Hauling",
+ "subcategories": [
+ {
+ "id": 212,
+ "name": "Bicycle pumps"
+ },
+ {
+ "id": 140,
+ "name": "Bike deliveries"
+ },
+ {
+ "id": 179,
+ "name": "Bike lessons"
+ },
+ {
+ "id": 147,
+ "name": "Bikessharing"
+ },
+ {
+ "id": 71,
+ "name": "Bike workshops"
+ },
+ {
+ "id": 141,
+ "name": "Carsharing"
+ },
+ {
+ "id": 196,
+ "name": "Taxisharing"
+ }
+ ],
+ "color": "D35400"
+ },
+ {
+ "id": 4,
+ "name": "Going Out and Hobbies",
+ "subcategories": [
+ {
+ "id": 171,
+ "name": "'Art Deco’ walks"
+ },
+ {
+ "id": 173,
+ "name": "'Art Nouvau’ walks"
+ },
+ {
+ "id": 200,
+ "name": "'Comic strips’ walks"
+ },
+ {
+ "id": 110,
+ "name": "Concert places"
+ },
+ {
+ "id": 117,
+ "name": "Dance schools"
+ },
+ {
+ "id": 186,
+ "name": "Holiday for all"
+ },
+ {
+ "id": 139,
+ "name": "Independant cinemas"
+ },
+ {
+ "id": 100,
+ "name": "Literary walks"
+ },
+ {
+ "id": 111,
+ "name": "Museums and exhibitions"
+ },
+ {
+ "id": 203,
+ "name": "Music classes for all"
+ },
+ {
+ "id": 96,
+ "name": "Sport clubs and infrastructures"
+ },
+ {
+ "id": 183,
+ "name": "'Street Art’ walks"
+ },
+ {
+ "id": 98,
+ "name": "Theatres"
+ }
+ ],
+ "color": "EEAD0E"
+ }
+]
diff --git a/doc/import/parser.rb b/doc/import/parser.rb
index 06566d7..25c7313 100644
--- a/doc/import/parser.rb
+++ b/doc/import/parser.rb
@@ -1,3 +1,7 @@
+# SPDX-FileCopyrightText: 2020 IN COMMON Collective <collective@incommon.cc
+#
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
require 'json'
require 'csv'
require 'set'
diff --git a/public/favicon.png b/public/favicon.png
new file mode 100644
index 0000000..f4af20c
--- /dev/null
+++ b/public/favicon.png
Binary files differ
diff --git a/public/favicon.svg b/public/favicon.svg
new file mode 100644
index 0000000..fc72c2c
--- /dev/null
+++ b/public/favicon.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ id="svg8"
+ version="1.1"
+ viewBox="0 0 32 32"
+ height="32"
+ width="32">
+ <defs
+ id="defs2">
+ <marker
+ style="overflow:visible"
+ id="Arrow2Lend"
+ refX="0"
+ refY="0"
+ orient="auto">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path850" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="Arrow1Mend"
+ refX="0"
+ refY="0"
+ orient="auto">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#e1ffff;fill-opacity:1;fill-rule:evenodd;stroke:#e1ffff;stroke-width:1.00000003pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path838" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="Arrow1Lend"
+ refX="0"
+ refY="0"
+ orient="auto">
+ <path
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:#e1ffff;fill-opacity:1;fill-rule:evenodd;stroke:#e1ffff;stroke-width:1.00000003pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path832" />
+ </marker>
+ </defs>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(0,-500.3333)"
+ id="layer1">
+ <g
+ transform="matrix(0.1,0,0,0.1,0,479.09998)"
+ id="incommon-map">
+ <circle
+ style="opacity:1;fill:#216778;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke"
+ id="path815"
+ cx="160"
+ cy="372.33331"
+ r="160" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:20;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend);display:block;transform-origin:50% 50%;animation:30s linear infinite both rot;@keyframes rot {0%{transform: rotate(0deg)}100%(transform:rotate(180deg);}"
+ d="M 121.85231,407.83675 237.94589,293.38278"
+ id="path827" />
+ </g>
+ </g>
+</svg>
diff --git a/public/icon-menu-off.b64.uri b/public/icon-menu-off.b64.uri
new file mode 100644
index 0000000..90f9300
--- /dev/null
+++ b/public/icon-menu-off.b64.uri
@@ -0,0 +1 @@
+data:image/svg+xml;base64,ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgaGVpZ2h0PSIzNi4yNSIgd2lkdGg9IjM2LjI1Ij48cGF0aCBzdHlsZT0iZmlsbDojZmZmZmZmIiBkPSJtIDE5LjQ4NDMzLDIxLjIzNDQgcSAwLjY0MDYyLC0xLjQ4NDQgMC42NDA2MiwtMy4xMDk0IDAsLTEuNjI1IC0wLjY0MDYyLC0zLjA5MzcgLTAuNjI1LC0xLjQ4NDQgLTEuNzAzMSwtMi41NjI1IC0xLjA3ODE0LC0xLjA3ODEgLTIuNTYyNDksLTEuNzAzMSAtMS40Njg3MywtMC42NDA3IC0zLjA5MzcxLC0wLjY0MDcgLTEuNjI0OTcsMCAtMy4xMDkzOSwwLjY0MDcgUSA3LjU0NjksMTEuMzkwNyA2LjQ2ODc3LDEyLjQ2ODggNS4zOTA2MywxMy41NDY5IDQuNzUsMTUuMDMxMyA0LjEyNSwxNi41IDQuMTI1LDE4LjEyNSBxIDAsMS42MjUgMC42MjUsMy4xMDk0IDAuNjQwNjIsMS40Njg3IDEuNzE4NzcsMi41NDY5IDEuMDc4MTMsMS4wNzggMi41NDY4NywxLjcxODcgMS40ODQzNSwwLjYyNSAzLjEwOTM5LDAuNjI1IDEuNjI0OTgsMCAzLjA5MzcxLC0wLjYyNSAxLjQ4NDM1LC0wLjY0MDcgMi41NjI0OSwtMS43MTg3IDEuMDc4MTQsLTEuMDc4MiAxLjcwMzEsLTIuNTQ2OSB6IG0gMTIuMDAwMDYsMCBxIDAuNjQwNjMsLTEuNDg0NCAwLjY0MDYzLC0zLjEwOTQgMCwtMS42MjUgLTAuNjQwNjMsLTMuMDkzNyAtMC42MjUsLTEuMS40Njg3NCwtMC42NDA3IC0zLjA5MzcxLC0wLjY0MDcgaCAtNi4wMzEyNiBxIDEuODU5MzMsMS40MDYzIDIuOTM3NDcsMy41IDEuMDkzNzUsMi4wOTM4IDEuMDkzNzUsNC41IDAsMi40MDYzIC0xLjA5Mzc1LDQuNSAtMS4wNzgxNCwyLjA5MzcgLTIuOTM3NDcsMy41IGggNi4wMzEyNiBxIDEuNjI0OTcsMCAzLjA5MzcxLC0wLjYyNSAxLjQ4NDM1LC0wLjY0MDcgMi41NjI0OCwtMS43MTg3IDEuMDc4MTQsLTEuMDc4MiAxLjcwMzA5LC0yLjU0NjkgeiBNIDMzLjMyODEyLDE0LjI1IHEgMC43OTY4OCwxLjg0MzggMC43OTY4OCwzLjg3NSAwLDIuMDMxMyAtMC43OTY4OCwzLjg5MDYgLTAuNzk2ODcsMS44NDM4IC0yLjE0MDU5LDMuMTg3NSAtMS4zMjgxMSwxLjMyODEgLTMuMTg3NTEsMi4xMjUgLTEuODQzNzMsMC43OTY5IC0zLjg3NDk4LDAuNzk2OSBIIDEyLjEyNDk2IHEgLTIuMDMxMjYsMCAtMy44OTA1OSwtMC43OTY5IFEgNi4zOTA2NSwyNi41MzEyIDUuMDQ2ODYsMjUuMjAzMSAzLjcxODc1LDIzLjg1OTQgMi45MjE4NywyMi4wMTU2IDIuMTI1LDIwLjE1NjMgMi4xMjUsMTguMTI1IDIuMTI1LDE2LjA5MzggMi45MjE4NywxNC4yNSAzLjcxODc1LDEyLjM5MDYgNS4wNDY4NiwxMS4wNjI1IDYuMzkwNTgsOS43MTg4IDguMjM0MzcsOC45MjE5IDEwLjA5MzcsOC4xMjUgMTIuMTI0OTYsOC4xMjUgaCAxMi4wMDAwOCBxIDIuMDMxMjUsMCAzLjg3NDk4LDAuNzk2OSAxLjg1OTMzLDAuNzk2OSAzLjE4NzUxLDIuMTQwNiAxLjM0MzcyLDEuMzI4MSAyLjE0MDU5LDMuMTg3NSB6IiAvPjwvc3ZnPgo= \ No newline at end of file
diff --git a/public/icon-menu-on.b64.uri b/public/icon-menu-on.b64.uri
new file mode 100644
index 0000000..52cefa0
--- /dev/null
+++ b/public/icon-menu-on.b64.uri
@@ -0,0 +1 @@
+data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgaGVpZ2h0PSIzNi4yNSIgd2lkdGg9IjM2LjI1Ij48cGF0aCBzdHlsZT0iZmlsbDojZmZmZmZmIiBkPSJtIDIuOTE4ODU3NCwyMi4wMTY3OSBxIC0wLjc5Mzg1NzEsLTEuODYzNjc0IC0wLjc5Mzg1NzEsLTMuODkzNjggMCwtMi4wMzAwMDYgMC43OTM4NTcxLC0zLjg3NDc3OSBRIDMuNzIwMjc0OSwxMi4zODg0MzggNS4wNDcxNTAxLDExLjA2MTU2MiA2LjM5MjkyNjgsOS43MTU3ODUzIDguMjMzOTE5NCw4LjkxODE0ODMgMTAuMDkzODEzLDguMTI0MjkxMyAxMi4xMjc2LDguMTI0MjkxMyBoIDExLjk5ODU4MiBxIDIuMDMwMDA2LDAgMy44NzQ3NzgsMC43OTM4NTcgMS44NTk4OTQsMC43OTc2MzcgMy4xODY3NjksMi4xNDM0MTM3IDEuMzQ1Nzc3LDEuMzI2ODc2IDIuMTQzNDE1LDMuMTg2NzY5IDAuNzkzODU2LDEuODQ0NzczIDAuNzkzODU2LDMuODc0Nzc5IDAsMi4wMzM3ODUgLTAuNzkzODU2LDMuODkzNjggLTAuNzk3NjM4LDEuODQ0NzcyIC0yLjE0MzQxNSwzLjE4Njc2OSAtMS4zMjMwOTUsMS4zMjY4NzUgLTMuMTg2NzY5LDIuMTI0NTEyIC0xLjg0NDc3MiwwLjc5NzYzOCAtMy44NzQ3NzgsMC43OTc2MzggSCAxMi4xMjc2IHEgLTIuMDMzNzg3LDAgLTMuODkzNjgwNiwtMC43OTM4NTggUSA2LjM5MjkyNjgsMjYuNTMwNDM0IDUuMDQ3MTUwMSwyNS4yMDM1NTkgMy43MjAyNzQ5LDIzLjg2MTU2MiAyLjkyMjYzNzYsMjIuMDE2NzkgWiBNIDIxLjAxODc5OSwyNS41MDIyIHEgMS40ODU2NDYsMC42MjM3NDUgMy4xMTExNjMsMC42MjM3NDUgMS42MjU1MTcsMCAzLjA5MjI2MiwtMC42MjM3NDUgMS40ODU2NDcsLTAuNjQyNjQ2IDIuNTYzMDI1LC0xLjcyMDAyNCAxLjA4MTE1NywtMS4wNzczNzcgMS43MDExMjIsLTIuNTQ3OTAzIDAuNjQyNjQ2LC0xLjQ4NTY0NiAwLjY0MjY0NiwtMy4xMTExNjMgMCwtMS42MjU1MTcgLTAuNjQyNjQ2LC0zLjA5MjI2MiAtMC42MTk5NjUsLTEuNDg1NjQ3IC0xLjcwMTEyMiwtMi41NjMwMjUgLTEuMDc3Mzc4LC0xLjA3NzM3NyAtMi41NjMwMjUsLTEuNzAxMTIyIC0xLjQ2Njc0NSwtMC42NDI2NDYgLTMuMDkyMjYyLC0wLjY0MjY0NiAtMS42MjU1MTcsMCAtMy4xMTExNjMsMC42NDI2NDYgLTEuNDcwNTI2LDAuNjIzNzQ1IC0yLjU0NzkwNCwxLjcwMTEyMiAtMS4wNzczNzcsMS4wNzczNzggLTEuNzIwMDIzLDIuNTYzMDI1IC0wLjYyMzc0NSwxLjQ2Njc0NSAtMC42MjM3NDUsMy4wOTIyNjIgMCwxLjYyNTUxNyAwLjYyMzc0NSwzLjExMTE2MyAwLjY0MjY0NiwxLjQ3MDUyNiAxLjcyMDAyMywyLjU0NzkwMyAxLjA3NzM3OCwxLjA3NzM3OCAyLjU0NzkwNCwxLjcyMDAyNCB6IiAvPjwvc3ZnPgo= \ No newline at end of file