Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Main #156

Open
wants to merge 146 commits into
base: bot
Choose a base branch
from
Open

Main #156

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
146 commits
Select commit Hold shift + click to select a range
4d59347
Merge pull request #4 from neo4j-contrib/bot
tomasonjo Sep 19, 2023
69cce44
Fix ollama vector dims
oskarhane Sep 19, 2023
bba7966
Don't depend on llm container
oskarhane Sep 19, 2023
a210c95
Add docker watch mode to loader
oskarhane Sep 19, 2023
d8ab4b0
Add title and info to loader page
oskarhane Sep 19, 2023
049b420
UI changes to loader
oskarhane Sep 19, 2023
14991fc
Update bot ui (drop tabs, add radios)
oskarhane Sep 19, 2023
cac0142
Add support for ollama embeddings in bot (commented out for now)
oskarhane Sep 20, 2023
20f1595
Add pages + start page to loader
oskarhane Sep 20, 2023
a65c1e9
Move vector index dimension config close to embeddings init
oskarhane Sep 20, 2023
fc55124
Add Ollama chat support (not used by default atm)
oskarhane Sep 20, 2023
4b73f6f
Update README
oskarhane Sep 20, 2023
b2a8e2a
update loader & bot
tomasonjo Sep 20, 2023
9475b96
Merge pull request #5 from neo4j-contrib/retrieval
tomasonjo Sep 21, 2023
c9784b3
fix llm only
tomasonjo Sep 21, 2023
32410e2
Fix Vector + RAG
jexp Sep 21, 2023
dc0018b
Switch to CE
jexp Sep 21, 2023
3559621
Remove unused image
oskarhane Sep 22, 2023
ca86a7f
Add sentence transformer for embeddings + config for what models to use
oskarhane Sep 22, 2023
a7d25be
streaming
tomasonjo Sep 22, 2023
c3232bd
Merge pull request #6 from neo4j-contrib/streaming
tomasonjo Sep 22, 2023
14d8c75
add prompt template
tomasonjo Sep 22, 2023
2a3a0bb
Removed the NEO4J_ACCEPT_LICENSE_AGREEMENT variable because we now us…
Sep 23, 2023
46e0ab0
Expanded the template for LLM-only mode to reduce hallucination. Repl…
Sep 24, 2023
76729aa
fix vector retrieval query
tomasonjo Sep 25, 2023
0c8ebcf
Various changes (#7)
jexp Sep 25, 2023
b10f42e
Git ignore neo4j data volume
oskarhane Sep 25, 2023
0d8f779
Rename mode selection label
oskarhane Sep 25, 2023
7727112
Cached embeddings model to improve DX
oskarhane Sep 25, 2023
e16e7c4
Drop cached embedding model from git tracking
oskarhane Sep 25, 2023
aeecd68
Git ignore local changes to embedding_model dir
oskarhane Sep 25, 2023
cae2e02
Save score on questions in db
oskarhane Sep 25, 2023
57a22b8
add favorite count
tomasonjo Sep 26, 2023
870cc36
prompt engineering sources
tomasonjo Sep 26, 2023
cdaa78c
switch to QAsources chain
tomasonjo Sep 26, 2023
9e0d126
Merge pull request #8 from neo4j-contrib/sourceprompt
tomasonjo Sep 26, 2023
8b7b48a
Feature: Generate internal ticket from question
oskarhane Sep 25, 2023
b9d4a0d
Merge pull request #9 from neo4j-contrib/generate-new-question
oskarhane Sep 26, 2023
29260e3
Add import button to load highly ranked questions from the past year
oskarhane Sep 26, 2023
57fce1a
Add .dockerignore
slimslenderslacks Sep 26, 2023
b9a51a1
Change words with RAG mode on chat messages
oskarhane Sep 26, 2023
26234f0
Merge pull request #10 from docker/slim/dockerignore
slimslenderslacks Sep 26, 2023
3b0dac2
Support any Ollama provided LLM via .env file
oskarhane Sep 28, 2023
009edf3
Add example values for LLM in .env.example
oskarhane Sep 28, 2023
250575d
Fix syntax error
oskarhane Sep 28, 2023
bf4d611
Made RAG Cypher Retrieval statement more human readable
jexp Sep 28, 2023
4572231
Fix UI glitch for growing textbox in chat
oskarhane Sep 28, 2023
c2cf59e
Refactor embedding instantiation
oskarhane Sep 28, 2023
075680b
Add data model image to loader page
oskarhane Sep 28, 2023
751f4fe
set reduce_k_below_max_tokens to false, otherwise no response is retu…
jexp Sep 28, 2023
2f0fb38
Tweak generation feature prompt to work better with Llama2
oskarhane Sep 29, 2023
9908aff
Fix some comments
oskarhane Sep 29, 2023
0ed3941
Change default LLM to llama2
oskarhane Sep 29, 2023
795de59
Update README
oskarhane Sep 30, 2023
325a026
Add LLM pre-req to README
oskarhane Oct 1, 2023
48be0ca
Refactor logic into separate files for easier reading
oskarhane Oct 2, 2023
ba8c7a4
Switch to langchain docker image
tomasonjo Oct 2, 2023
e1784b9
Merge pull request #13 from docker/langchaindocker
oskarhane Oct 2, 2023
5847faa
Automatically pull the model in the LLM env variable (#12)
slimslenderslacks Oct 2, 2023
f057411
use creative commons license (#11)
slimslenderslacks Oct 2, 2023
75bfb89
Add pdf bot
tomasonjo Oct 3, 2023
acf5c2b
Add index_name and node_label to PDF bot index
oskarhane Oct 3, 2023
6e9d813
Merge pull request #14 from docker/pdf_bot
oskarhane Oct 3, 2023
cc9f75c
Fix embeddings config errors
oskarhane Oct 4, 2023
8440f39
Add App3 to README
oskarhane Oct 4, 2023
54aa80e
pinning torch to 2.0.1 and sentence transformers to 2.2.2
jexp Oct 4, 2023
361a002
Warn about performance issue impacting python (#16)
slimslenderslacks Oct 5, 2023
c255377
add syntax directive (#15)
slimslenderslacks Oct 5, 2023
cc78f30
Update env example
tomasonjo Oct 6, 2023
febd377
Fix readme.md to start docker-compose with profile
Desnoo Oct 6, 2023
5168133
Merge pull request #21 from Desnoo/patch-1
oskarhane Oct 7, 2023
1581609
Fix typo in readme.md
eltociear Oct 8, 2023
71b8c10
Merge pull request #27 from eltociear/patch-1
oskarhane Oct 9, 2023
ec67a34
Update readme.md
shelar1423 Oct 9, 2023
cf647fb
Update readme.md
zooninja Oct 9, 2023
8741bbd
Merge pull request #31 from shelar1423/main
oskarhane Oct 9, 2023
bdaf16e
Merge branch 'main' into main
zooninja Oct 9, 2023
474de12
Pre-demo changes
slimslenderslacks Oct 9, 2023
8c2debd
fix readme typo
RafeAthar Oct 10, 2023
0a89d3d
Merge pull request #32 from zooninja/main
oskarhane Oct 10, 2023
99d87d0
Merge pull request #35 from RafeAthar/fix_readme-typo
oskarhane Oct 10, 2023
d0eb8a2
Merge pull request #19 from docker/env
oskarhane Oct 10, 2023
69117c9
Update pdf_bot.py
jexp Oct 10, 2023
0f181de
Update chains.py
jexp Oct 10, 2023
2b1bfae
Add API container + static client
oskarhane Oct 2, 2023
0b99705
Update README
oskarhane Oct 11, 2023
ce390cf
README updates
oskarhane Oct 12, 2023
255c246
Update links in response
oskarhane Oct 12, 2023
8fbc658
Adjust input width stepped with window size
oskarhane Oct 12, 2023
3384582
Merge pull request #40 from oskarhane/api
oskarhane Oct 12, 2023
d4a3e2a
Add link to post and linux LLM env
tomasonjo Oct 12, 2023
37a5ebb
Merge pull request #44 from docker/tomasonjo-patch-1
tomasonjo Oct 12, 2023
29ed2f1
fixed typos
rahul0x00 Oct 12, 2023
2c100b0
Updated README & docker-compose
matthieuml Oct 12, 2023
55cfed6
Update array syntax
matthieuml Oct 12, 2023
5344262
Merged to latest changes
matthieuml Oct 12, 2023
98c5c3d
Merge pull request #47 from matthieuml/main
oskarhane Oct 13, 2023
ca8427a
Update readme.md
rahul0x00 Oct 13, 2023
230213f
Merge pull request #45 from rahul0x00/patch-1
oskarhane Oct 13, 2023
5557a28
Fix missing default for LLM env var
robsdedude Oct 13, 2023
91410af
Merge pull request #34 from docker/slim/pre-demo
oskarhane Oct 13, 2023
d304130
Add aws embedding & LLM
tomasonjo Oct 15, 2023
4319ffd
Added api dependency on pull-model
matthieuml Oct 16, 2023
8bc1000
Merge pull request #54 from matthieuml/main
oskarhane Oct 16, 2023
9ef6de8
Merge pull request #49 from robsdedude/patch-1
oskarhane Oct 16, 2023
5883958
Merge pull request #50 from docker/aws
tomasonjo Oct 16, 2023
aec7cf1
Add healthcheck to api service
TheCulliganMan Oct 18, 2023
df19126
Updating Comments in env.example for Clarity
zach-blumenfeld Oct 20, 2023
ad386ea
ReOrg env.template File for Clarity
zach-blumenfeld Oct 20, 2023
8c4e67a
Update chains.py
tomasonjo Oct 23, 2023
6022155
Merge pull request #66 from docker/tomasonjo-patch-1
tomasonjo Oct 23, 2023
f8cf77d
Merge pull request #61 from zach-blumenfeld/update-env-example
zach-blumenfeld Oct 23, 2023
af43324
Add generation feature to Svelte front-end
oskarhane Oct 20, 2023
47f4a5a
Merge pull request #67 from oskarhane/refactor-generate-ticket
oskarhane Oct 24, 2023
2d5b16e
Small updates to Svelte UI
oskarhane Oct 26, 2023
ed5d1a0
Add contributing guidelines (#68)
slimslenderslacks Oct 26, 2023
4112db5
Make generation prompt more robust
oskarhane Oct 26, 2023
0d9ddd3
Recommend docker compose watch + remove 4.23 recommendation from README
oskarhane Oct 31, 2023
c328334
Keep x-develop for better compat with older compose versions
oskarhane Nov 1, 2023
a0366c0
removed start.sh
jexp Nov 3, 2023
76f0318
Linux nvidia GPU option
jexp Nov 3, 2023
4071ae1
Revert "Linux nvidia GPU option"
jexp Nov 3, 2023
611bf84
Add linux-gpu profile to enable GPU (#64)
matthieuml Nov 3, 2023
73a42da
Fix openai version due to breaking API change
oskarhane Nov 7, 2023
93ffce8
Remove unused varaibles
oskarhane Nov 8, 2023
d91cfa3
Fix openai on 0.28.1 until upstream libraries have adapted to new API
oskarhane Nov 8, 2023
147bd24
Change app title
oskarhane Nov 8, 2023
b3be4b5
Update stack name in README
oskarhane Nov 8, 2023
e8cc3b3
Merge pull request #57 from TheCulliganMan/main
oskarhane Nov 9, 2023
88c10d8
Fix typo in PDF bot (#90)
johnsonr Nov 13, 2023
f779482
Fix spelling mistake (#102)
borisromanov Dec 22, 2023
1a30710
fixed a spacing issues in readme file (#87)
Illapavan Dec 22, 2023
137b31f
Update docker-compose.yml (#81)
chenblueridge Dec 22, 2023
a61f493
Allow the display pull progress with docker compose up (#55)
matthieuml Dec 22, 2023
f8cde89
Fix KeyError: 'ollama_base_url' (#97)
denverdino Dec 22, 2023
c2894a8
Fixed Typo and Grammar (#59)
Sanyam-2026 Dec 22, 2023
b70412d
running on WSL (#38)
ssime-git Jan 8, 2024
6e5930b
Use 8502 port for the healthcheck (#110)
ilopezluna Jan 8, 2024
0724f1f
Bump vite from 4.4.10 to 4.4.12 in /front-end (#107)
Tachii Jan 24, 2024
a1ab733
Langchain 0.1.0 update (#121)
jexp Jan 31, 2024
3b4bdf0
Pull model if not present locally (#119)
denverdino Jan 31, 2024
9782135
adds user directive to database service (#104)
withtwoemms Jan 31, 2024
966563c
Update readme.md (#128)
sidagarwal04 Feb 21, 2024
c44aa64
Update docker-compose.yml (#127)
sidagarwal04 Feb 21, 2024
9191739
Add Google Generative AI Embeddings as an option (#129)
Lapeyus Feb 21, 2024
2fd4593
[ImgBot] Optimize images
ImgBotApp May 27, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
*
!*.py
!requirements.txt
!images/*
!front-end/*
front-end/node_modules/*
Binary file modified .github/media/app1-concept.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/media/app1-generate.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/media/app1-rag-selector.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/media/app1-ticket.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .github/media/app2-model.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/media/app2-ui-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/media/app3-ui.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/media/app5-ui.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
.env

data/
embedding_model/*
!embedding_model/.ignore
.DS_Store
250 changes: 250 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,250 @@
# Contributing to Docker

This page contains information about reporting issues as well as some tips and
guidelines useful to experienced open source contributors. Finally, make sure
you read our [community guidelines](#docker-community-guidelines) before you
start participating.

## Topics

* [Reporting Security Issues](#reporting-security-issues)
* [Reporting Issues](#reporting-other-issues)
* [Quick Contribution Tips and Guidelines](#quick-contribution-tips-and-guidelines)
* [Community Guidelines](#docker-community-guidelines)

## Reporting security issues

The Docker maintainers take security seriously. If you discover a security
issue, please bring it to their attention right away!

Please **DO NOT** file a public issue, instead send your report privately to
[security@docker.com](mailto:security@docker.com).

Security reports are greatly appreciated and we will publicly thank you for it.
We also like to send gifts—if you're into Docker schwag, make sure to let
us know. We currently do not offer a paid security bounty program, but are not
ruling it out in the future.

## Reporting other issues

A great way to contribute to the project is to send a detailed report when you
encounter an issue. We always appreciate a well-written, thorough bug report,
and will thank you for it!

Check that [our issue database](https://github.com/docker/gen-ai-stack/issues)
doesn't already include that problem or suggestion before submitting an issue.
If you find a match, you can use the "subscribe" button to get notified on
updates. Do *not* leave random "+1" or "I have this too" comments, as they
only clutter the discussion, and don't help resolving it. However, if you
have ways to reproduce the issue or have additional information that may help
resolving the issue, please leave a comment.

When reporting issues, always include:

* The output of `docker version`.
* The output of `docker info`.

Also include the steps required to reproduce the problem if possible and
applicable. This information will help us review and fix your issue faster.
When sending lengthy log-files, consider posting them as a gist (https://gist.github.com).
Don't forget to remove sensitive data from your logfiles before posting (you can
replace those parts with "REDACTED").

## Quick contribution tips and guidelines

This section gives the experienced contributor some tips and guidelines.

### Pull requests are always welcome

Not sure if that typo is worth a pull request? Found a bug and know how to fix
it? Do it! We will appreciate it. Any significant improvement should be
documented as [a GitHub issue](https://github.com/docker/gen-ai-stack/issues) before
anybody starts working on it.

We are always thrilled to receive pull requests. We do our best to process them
quickly. If your pull request is not accepted on the first try,
don't get discouraged! Our contributor's guide explains [the review process we
use for simple changes](https://docs.docker.com/opensource/workflow/make-a-contribution/).

### Talking to other Docker users and contributors

<table class="tg">
<col width="45%">
<col width="65%">
<tr>
<td>Community Slack</td>
<td>
The Docker Community has a dedicated Slack chat to discuss features and issues. You can sign-up <a href="https://dockr.ly/slack" target="_blank">with this link</a>.
</td>
</tr>
<tr>
<td>Twitter</td>
<td>
You can follow <a href="https://twitter.com/docker/" target="_blank">Docker's Twitter feed</a>
to get updates on our products. You can also tweet us questions or just
share blogs or stories.
</td>
</tr>
</table>


### Conventions

Fork the repository and make changes on your fork in a feature branch:

- If it's a bug fix branch, name it XXXX-something where XXXX is the number of
the issue.
- If it's a feature branch, create an enhancement issue to announce
your intentions, and name it XXXX-something where XXXX is the number of the
issue.

Pull request descriptions should be as clear as possible and include a reference
to all the issues that they address.

Commit messages must start with a capitalized and short summary (max. 50 chars)
written in the imperative, followed by an optional, more detailed explanatory
text which is separated from the summary by an empty line.

Code review comments may be added to your pull request. Discuss, then make the
suggested modifications and push additional commits to your feature branch. Post
a comment after pushing. New commits show up in the pull request automatically,
but the reviewers are notified only when you comment.

Pull requests must be cleanly rebased on top of master without multiple branches
mixed into the PR.

**Git tip**: If your PR no longer merges cleanly, use `rebase main` in your
feature branch to update your pull request rather than `merge main`.

Before you make a pull request, squash your commits into logical units of work
using `git rebase -i` and `git push -f`. A logical unit of work is a consistent
set of patches that should be reviewed together: for example, upgrading the
version of a vendored dependency and taking advantage of its now available new
feature constitute two separate units of work. Implementing a new function and
calling it in another file constitute a single logical unit of work. The very
high majority of submissions should have a single commit, so if in doubt: squash
down to one.

Include an issue reference like `Closes #XXXX` or `Fixes #XXXX` in the pull request
description that close an issue. Including references automatically closes the issue
on a merge.

### Sign your work

The sign-off is a simple line at the end of the explanation for the patch. Your
signature certifies that you wrote the patch or otherwise have the right to pass
it on as an open-source patch. The rules are pretty simple: if you can certify
the below (from [developercertificate.org](https://developercertificate.org):

```
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
660 York Street, Suite 102,
San Francisco, CA 94110 USA

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or

(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or

(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.

(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
```

Then you just add a line to every git commit message:

Signed-off-by: Joe Smith <joe.smith@email.com>

Use your real name (sorry, no pseudonyms or anonymous contributions.)

If you set your `user.name` and `user.email` git configs, you can sign your
commit automatically with `git commit -s`.

## Docker community guidelines

We want to keep the Docker community awesome, growing and collaborative. We need
your help to keep it that way. To help with this we've come up with some general
guidelines for the community as a whole:

* Be nice: Be courteous, respectful and polite to fellow community members:
no regional, racial, gender, or other abuse will be tolerated. We like
nice people way better than mean ones!

* Encourage diversity and participation: Make everyone in our community feel
welcome, regardless of their background and the extent of their
contributions, and do everything possible to encourage participation in
our community.

* Keep it legal: Basically, don't get us in trouble. Share only content that
you own, do not share private or sensitive information, and don't break
the law.

* Stay on topic: Make sure that you are posting to the correct channel and
avoid off-topic discussions. Remember when you update an issue or respond
to an email you are potentially sending to a large number of people. Please
consider this before you update. Also remember that nobody likes spam.

* Don't send email to the maintainers: There's no need to send email to the
maintainers to ask them to investigate an issue or to take a look at a
pull request. Instead of sending an email, GitHub mentions should be
used to ping maintainers to review a pull request, a proposal or an
issue.

### Guideline violations — 3 strikes method

The point of this section is not to find opportunities to punish people, but we
do need a fair way to deal with people who are making our community suck.

1. First occurrence: We'll give you a friendly, but public reminder that the
behavior is inappropriate according to our guidelines.

2. Second occurrence: We will send you a private message with a warning that
any additional violations will result in removal from the community.

3. Third occurrence: Depending on the violation, we may need to delete or ban
your account.

**Notes:**

* Obvious spammers are banned on first occurrence. If we don't do this, we'll
have spam all over the place.

* Violations are forgiven after 6 months of good behavior, and we won't hold a
grudge.

* People who commit minor infractions will get some education, rather than
hammering them in the 3 strikes process.

* The rules apply equally to everyone in the community, no matter how much
you've contributed.

* Extreme violations of a threatening, abusive, destructive or illegal nature
will be addressed immediately and are not subject to 3 strikes or forgiveness.

* Contact abuse@docker.com to report abuse or appeal violations. In the case of
appeals, we know that mistakes happen, and we'll work with you to come up with a
fair solution if there has been a misunderstanding.

121 changes: 121 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
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.
Loading